2010-05-26 90 views
0

我需要幫助結構,繼承和定義。結構,繼承和定義

//define struct 
struct tStruct1{ 
    int a; 
}; 

//definition 
tStruct1 struct1{1}; 

和繼承

struct tStruct2:tStruct1{ 
    int b; 
}; 

我怎麼能在聲明行定義的呢?

tStruct2 struct2{ ????? }; 

還有一個問題,我如何使用typedef結構定義的結構的繼承?

回答

4

首先,一個結構的typedef不會改變任何東西,它只會爲該類型引入一個替代名稱。你仍然可以照常繼承它。

定義的Type identifier{params}語法是新的uniform initialization的C++ 0x語法。在C++ 0x之前,你有兩種選擇來初始化用戶定義的類型。

集合初始化

骨料是POD類型和莢果的陣列或內置類型。他們可以使用初始化列表大括號來初始化:

struct A { 
    int i; 
}; 
struct B { 
    A j; 
    int k; 
}; 

B b = {{1}, 2 }; 

這是中詳細介紹在此InformIT article

如上所述,這隻適用於POD類型,因此在繼承發揮作用時不起作用。在這種情況下,你必須使用

用戶定義的構造

它們允許你通過定義特殊的成員函數相當自由地初始化您的自定義類型:

struct A { 
    int i; 
    A(int number) : i(number) {} 
}; 
struct B : A { 
    int j; 
    B(int number1, number2) : A(number1), j(number2) {} 
}; 

B b(1, 2); 

構造函數中詳細介紹在this InformIT article