为什么子类的构造函数先执行

来源:百度知道 编辑:UC知道 时间:2024/05/11 14:19:22
用vc编了个程序,跟踪后发现先执行的是子类的构造函数后才执行父类的构造函数。在C++中应该是先调用父类的构造函数吧。

class B
{
public:
B(int b) : b_(b){ cout<<"B"<<endl; }
private:
int b_
};

class A: public B
{
public:
A(int a, int b): B(b){ cout<<"A"<<endl; }
private:
int a_;
};

A ca(1,2);
在定义A型变量时,显然先调用派生类的构造函数,并把两个参数中的一个参数传给基类的构造函数,并完成基类的构造函数,后在完成派生类的构造函数。

首先是构造基类的构造函数,然后是派生类的构造函数
但它和在生成对象先调用派生类的析构函数没有冲突,因为此时并没有将派生类的构造函数完成,它必须在基类构造函数完成后才能完成。