c++之派生类的构造函数与析构函数问题
2018-02-08 22:17
267 查看
1对于c++的派生类的构造函数来说,派生类对象的构造分为两部分,一类是对基类的构造(初始化),这个初始化可以通过偷偷地调用基类相应的构造函数(默认构造函数,或者有参构造函数等)2另一类是对新增成员的构造,也称之为初始化。3所以,在构建一个派生类对象时总是先对基类进行初始化,再接着对派生类新增的成员函数进行初始化。4在析构时,情况完全相反。先析构新增成员,后析构继承过来的基类。
#include <iostream> using namespace std; class Base1 { //基类Base1,构造函数有参数 public: Base1(int i) { cout << "Constructing Base1 " << i << endl; } ~Base1() { cout << "Destructing Base1" << endl; } }; class Base2 { //基类Base2,构造函数有参数 public: Base2(int j) { cout << "Constructing Base2 " << j << endl; } ~Base2() { cout << "Destructing Base2" << endl; } }; class Base3 { //基类Base3,构造函数无参数 public: Base3() { cout << "Constructing Base3 *" << endl; } ~Base3() { cout << "Destructing Base3" << endl; } }; class Derived: public Base2, public Base1, public Base3 { //派生新类Derived,注意基类名的顺序 public: //派生类的公有成员 Derived(int a, int b, int c, int d): Base1(a), member2(d), member1(c), Base2(b) { } //注意基类名的个数与顺序,注意成员对象名的个数与顺序 private: //派生类的私有成员对象 Base1 member1; Base2 member2; Base3 member3; }; int main() { Derived obj(1, 2, 3, 4); return 0; }
相关文章推荐
- C++中构造函数和析构函数避免调用虚函数的问题
- 派生类的构造函数和析构函数(C++面向对象)
- C++语言基础 例程 派生类的构造函数和析构函数
- C++ 派生类的构造函数和析构函数
- C++之构造函数、析构函数抛出异常的问题
- 对C++中派生类的构造函数和析构函数的认识
- C++语法基础--派生类的构造函数,赋值操作符,析构函数,虚析构函数
- 关于基类和派生类的构造函数和析构函数的执行顺序问题
- C++中基类,派生类 类成员对象的构造函数,析构函数的顺序
- c++有关构造函数和析构函数中调用虚函数问题
- C++派生类构造函数和析构函数调用顺序
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- C++的构造函数 和 析构函数的问题
- 摘:C++中构造函数和析构函数避免调用虚函数的问题
- C++学习笔记(6)----基类和派生类的构造函数和析构函数的执行顺序
- C++中构造函数和析构函数避免调用虚函数的问题
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
- C++中构造函数和析构函数抛出异常问题
- c++派生类和基类的构造函数和析构函数
- C++之派生类的构造函数和析构函数调用顺序