久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C++基礎(chǔ),可否跳過直接基類,初始化間接基類成員

 guitarhua 2014-11-15
如下代碼
C/C++ code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "stdafx.h"
#include <iostream.h>
class A
{
public :
    A () {} ;
    A ( int a ) 
    {
        this->a = a ; 
        cout << "A::A()" << "  " << this->a << endl ; 
    }
    int a ;
};
class B : public A
{
public:
    B () {} ;
    B ( int b ) :A ( 0 ) 
    
        this->b = b ;
        cout << "B::B()" << "  " << this->b << endl ; 
    }
    int b ;
}; 
class C : public 
{
public:
    <span style="color: #FF0000;">C () : B ( 1 ) // A ( 1 )</span>    { 
        cout << "C::C()" << endl ;
    }
    int c ;
};
int main()
{
    C c;
    return 0;
}

C類構(gòu)造函數(shù)可否跳過B類而直接初始化頂層基類的成員變量
C () : A ( 1 )

可以,使用虛擬繼承,不過這種要求一般都有些不合理.
C/C++ code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
using namespace std;
class A
{
public :
    A () {} ;
    A ( int a ) {
        this->a = a ;
        cout << "A::A()" << "  " << this->a << endl ;
    }
    int a ;
};
class B : virtual public A
{
public:
    B () {} ;
    B ( int b ) :A ( 0 ) {
        this->b = b ;
        cout << "B::B()" << "  " << this->b << endl ;
    }
    int b ;
};
class C : public B
{
public:
    C () : B ( 1 ) , A ( 2 )   {
        cout << "C::C()" << endl ;
    }
    int c ;
};
int main()
{
    C c;
    return 0;
}

除了虛擬繼承下來的祖先類,,其它的都不可以,。
這暴露了你設(shè)計中有瑕疵。如果C繼承于B,,B繼承于A,,那如果對了A的某個構(gòu)造函數(shù)a1,,假如B沒有提供相應(yīng)的構(gòu)造手段,就是說明B不想被人那樣繼承,。
你要么應(yīng)該修改B,,提供相應(yīng)的構(gòu)造方法來完成這種參數(shù)的傳遞,要么應(yīng)該根據(jù)新的需求增加一個與B平行的B1類,。

我的需求是:
C的構(gòu)造函數(shù)要依次走A->B->C的構(gòu)造函數(shù),虛繼承就不行了,走不到B
A的構(gòu)造函數(shù)中要根據(jù)是C或者是B(當(dāng)然還有其他許多)來初始化一些東西

那請問該如何實現(xiàn)?

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多