派生类构造函数的调用顺序
2014-05-18 22:45
253 查看
派生类构造函数的调用顺序如下:
基类的构造函数;
子对象类的构造函数;
派生类的构造函数.
当撤销派生类对象时,析构函数的调用正好相反。
实例:
class Base1 { int x;
public: Base1(int a){ x=a;cout<<"调用基类1的构造函数!\n"; }
~Base1( ){ cout<<"调用基类1的析构函数!\n"; }
};
class Base2 { int y;
public: Base2(int a){ y=a;cout<<"调用基类2的构造函数!\n"; }
~Base2( ){ cout<<"调用基类2的析构函数!\n"; }
};
class Derived:public Base2, public Base1{
int z; Base1 b1,b2;
public: Derived(inta,int b):Base1(a),Base2(20), b1(200),b2(a+b)
{z=b; cout<<"调用派生类的构造函数!\n";}
~Derived( ){cout<<"调用派生类的析构函数!\n";}
};
void main(void)
{ Derived c(100,200);
}
调用基类2的构造函数
调用基类1的构造函数
调用基类1的构造函数(说明基类1的对象b1)
调用基类1的构造函数(说明基类1的对象b2)
调用派生类的构造函数
调用派生类的析构函数
调用基类1的析构函数
调用基类1的析构函数
调用基类1的析构函数
调用基类2的析构函数
基类的构造函数;
子对象类的构造函数;
派生类的构造函数.
当撤销派生类对象时,析构函数的调用正好相反。
实例:
class Base1 { int x;
public: Base1(int a){ x=a;cout<<"调用基类1的构造函数!\n"; }
~Base1( ){ cout<<"调用基类1的析构函数!\n"; }
};
class Base2 { int y;
public: Base2(int a){ y=a;cout<<"调用基类2的构造函数!\n"; }
~Base2( ){ cout<<"调用基类2的析构函数!\n"; }
};
class Derived:public Base2, public Base1{
int z; Base1 b1,b2;
public: Derived(inta,int b):Base1(a),Base2(20), b1(200),b2(a+b)
{z=b; cout<<"调用派生类的构造函数!\n";}
~Derived( ){cout<<"调用派生类的析构函数!\n";}
};
void main(void)
{ Derived c(100,200);
}
调用基类2的构造函数
调用基类1的构造函数
调用基类1的构造函数(说明基类1的对象b1)
调用基类1的构造函数(说明基类1的对象b2)
调用派生类的构造函数
调用派生类的析构函数
调用基类1的析构函数
调用基类1的析构函数
调用基类1的析构函数
调用基类2的析构函数
相关文章推荐
- 【C++】基类和派生类构造函数的调用顺序
- 内嵌子对象时派生类构造函数与析构函数的调用顺序
- 关于派生类构造函数与基类构造函数的调用顺序问题
- C++派生类构造函数调用顺序(详解)
- C++基类、派生类构造函数调用顺序
- 派生类构造函数和析构函数的调用顺序(C++)
- C++派生类构造函数和析构函数调用顺序
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- C++之派生类的构造函数和析构函数调用顺序
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- 构造函数访问权限和基类构造函数,派生类的构造函数调用顺序
- c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)
- 关于派生类构造函数与基类构造函数的调用顺序问题
- 派生类构造函数的调用顺序
- C++:派生类的构造函数和析构函数的调用顺序
- 【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序
- 关于派生类构造函数与基类构造函数的调用顺序问题
- C++派生类构造函数调用顺序
- C++中建立派生类对象时构造函数的调用顺序
- 关于派生类构造函数与基类构造函数的调用顺序问题