C++面向对象知识点九:基类成员的初始化

多继承

程序示例:

#include <iostream>
using namespace std;

class A
{
protected: 
    int data1, data2;
public:
    A(int a=0, int b=0)
    {
        data1 = a;
        data2 = b;
        cout << "A Constructor" << endl;
    }

    ~A()
    {
        cout << "A Destructor" << endl;
    }  
};

class B
{
protected: 
    int data3;
public:
    B(int a=0)
    {
        data3 = a;
        cout << data3 << ", B Constructor" << endl;
    }

    ~B()
    {
        cout << data3 << ", B Destructor" << endl;
    }  
};

class C: public A, public B
{
    int data4, data5;
    B bdata;
public:
    C(int a1=0, int a2=0, int a3=0, int a4=0, int a5=0): bdata(a1), A(a1, a2), B(a3)
    {
        data4 = a4;
        data5 = a5;
        cout << "C Constructor" << endl;
    }

    ~C()
    {
        cout << "C Destructor" << endl;
    }  
    
    void show()
    {
        cout << data1 << ',' << data2 << ',' << data3 << ',' << data4 << ',' << data5 << endl;
    }
};

int main()
{
    C c(1,2,3,4,5);
    c.show();
    return 0;
}

输出结果: 

由输出结果可知,C++对调用函数的调用处理为:先调用基类的构造函数,再调用对象成员的构造函数,最后调用对象自身的构造函数。

析构函数的调用顺序与构造函数相反

猜你喜欢

转载自blog.csdn.net/Doutd_y/article/details/82113483
今日推荐