关于构造函数和析构函数的总结:
1.构造函数和析构函数都不能被继承(原因:构造函数和析构函数和类的名字相同,继承过来就会出错)。
2.派生类对象呗被创建时,基类的对象会被先创建。
A->B->C->D;
比如说:class D:public A,public B,public C;
构造的时候先创建A 的对象,再创建B的对象,再创建C 的对象。
析构的时候 先析构C的对象,再洗后B的对象,再析构C 的对象
3.派生类的构造函数被调用时,先会调用基类中的默认的一个构造函数。
4.派生类中的构造函数用了初始化表的方式调用了基类构造函数(这里初始化表指的是构造函数初始化表而不是参数的初始化表,看例子)。
5.派生类对象在析构的时候,先执行派生类的构造函数,再执行基类的析构函数。
class A class B:public A
{ {
public: public:
A(); int x;
A(int x); B();
~A(); B(int y);
~B();
}; };
A::A(){ B::B():A(23),x(123) { //创建对象B的时候,会调用A对象的构造函 ,数,A(23)指的是A类中的构造函数,X指的 是B的成员变量X
--------------- ------------------------
}; };
A::A(int x){ B::B(int y):A(y) //如果没写A的话则默认调用A 类中无参的构 造函数。A()
{ {
--------
}; };
A::~a(){ B::~B(){
} };