C++语言构造函数继承问题

 我来答
大沈他次苹0B
2016-04-16 · TA获得超过7274个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:171万
展开全部
  1. 子类的构造函数
    1)隐式构造基类子对象
    2)显示构造基类子对象
    3)构造顺序:首先按照继承表的顺序,依次调用各个基类的构造函数,初始化子类对象中的基类子对象;其次按照声明的顺序,依次调用各个类类型成员变量相应类型的构造函数,初始化子类对象中的成员子对象;最后执行子对象构造函数中的代码。所有的子对象按照被构造的顺序,地址依次升高。


    //   A   公共基类(爷)
    //  /   \
    // B   C 中间子类(爹)
    //  \   /
    //   D   汇集子类(孙)

    #include <iostream>
    using namespace std;
    class A {
    public:
        A (int data) : m_data (data) {
            cout << "A构造:" << this << endl;
        }
        int m_data;
    };
    class B : virtual public A {
    public:
        B (int data) : A (1234) {
            cout << "B构造:" << this << endl;
        }
        void set (int data) {
            m_data = data;
        }
    };
    class C : virtual public A {
    public:
        C (int data) : A (5678) {
            cout << "C构造:" << this << endl;
        }
        int get (void) const {
            return m_data;
        }
    };
    class D : public B, public C {
    public:
        D (int data) : B (data), C (data),
               A (data) {
            cout << "D构造:" << this << endl;
        }
    };
    int main (void) {
        D d (100);
        d.set (200);
        cout << d.get () << endl; // ?
        cout << sizeof (d) << endl;
        return 0;
    }


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式