class Base
{
private:
int value;
public:
Base()
{
cout<<"Base()"<<endl;
}
Base(int value)
{
cout<<"Base(int x)"<<endl;
this->value=value;
}
virtual void display()
{
cout<<"x="<<value<<endl;
}
};
class Derived:public Base
{
public:
Derived()
{
cout<<"Derive()"<<endl;
}
Derived(int value):Base(value)
{
cout<<"Derive(int value)"<<endl;
Base::display();
}
};
在派生类中,如何调用基类的构造函数?只能像下面那样子调用吗?
Derived(int value):Base(value)
能不能像调用基类的普通成员函数那样子啊
Base::display();
会不会有调用两个基类的构造函数的情况啊?
我是学C#的,以前学过C++,但是很长时间了,所以都忘得差不多了,说的不对还请见谅。
::只能在类成员函数和类成员变量中。构造函数的调用只能那样调用,你可以试试用::应该会报错的!
当调用两个基类的构造函数时,比如
class a
{
public:
a()
{
cout<<"a"<<endl;
}
};
class b
{
public:
b()
{
cout<<"b"<<endl;
}
};
class c :public a,public b
{
public:
c():a()
{
cout<<"c"<<endl;
}
};
void main()
{
c cc;
}
这样输出的就是:abc
我想问的是调用一个基类里面的两个构造函数,不是两个基类的构造函数
@林羽飞扬: 照着你的例子改一下,这样行吗?我没试过,你自己来个例子试试呗,别人光说不行,自己练出来才会真正明白!
Derived() :Base()
{
cout<<"Derive()"<<endl;
}
thankyou
实践出真知
@yanzhe:
Derived()
{
base(value);
cout<<"Derive()"<<endl;
base.foo();
}