关于继承有关的构造函数
class A
{
public:
A() {};
void print() { cout < < "A的print() " < <endl; };
};
class B : public A
{
public:
B() : A() //这里构造基类的构造函数时为什么如果用A::A().就报 错?原因是什么?
{ A::print();}; //而这里用了A::print()就对
}
[解决办法]
B的构造函数中初始化基类的部分,调用A的构造函数 没有必要A::A()
[解决办法]
因为构造函数是很特殊的函数,它只能用初始化列表语法来调用。
如果你单独A::A()如果能编译过,也只是得到一个A类型的临时对象,而不是初始化B类的基类部分。
C++就这么规定了。