class A { public: A() { cout << "class A default constructor called" << endl; a = 0; } A(int param) { cout << "class A constructor called" << endl; a = param; } ~A() { } virtual void FunctionA() { cout << "classA" << endl; } int a; private: }; class B:public A { public: B() { } B(int m):b(m),a(m) { cout <<"class B constructor called" << endl; } ~B() { } virtual void FunctionA() { cout << "classA" << endl; } void FunctionB() { cout << b << endl; } private: int b; }; int main() { A* pA = new B(10); while(1); return 0; }
这里编译器会有一个警告,意思是说a不是B的成员或者基类。 a是不能放在派生类B的初始化列表里进行初始化。
所以在派生类的初始化列表里面,只会进行以下的初始化操作:
派生类的初始化列表:基类的初始化, 派生类本身数据成员的初始化。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-10 14:07:57