当基类构造函数没有参数或没有定义构造函数时,派生类可以不向基类传递参数,甚至可以不定义构造函数。当基类含有带参数的构造函数时,派生类必须定义构造函数,提供把参数传递给基类构造函数的途径。如果派生类的基类也是派生类,每个派生类子须负责其直接基类成员的初始化。
#include<iostream> using namespace std; class B{ public: B(int n) {cout<<"constructing B class\n"; i=n; } ~B() { cout<<"destructing B class\n"; } void dispB() { cout<<"i="<<i<<endl; } private: int i; }; class C:public B{ public: C(int n,int m):B(m) { cout<<"constructing C class\n"; j=n; } ~C() { cout<<"destructing C class\n"; } dispC() { dispB(); cout<<"j="<<j<<endl; } private: int j; }; int main() { B b(10); b.dispB(); cout<<"c.dispB()============="<<endl; C c(50,60); c.dispB(); cout<<"c.dispC()=============="<<endl; c.dispC(); return 0; } |