繼承

2013-10-25 77 views
0

一個合法性的困惑,我的C++一個新人,我的問題可能是愚蠢的:繼承

我們類A,B和C的定義如下:

class A { 
public: 
    typedef Resouce Money; 
}; 

class B 
    :public A { 
}; 

class C { 
public: 
    typedef B::Money MyMoney; 
}; 

這是有效的?我很困惑,因爲'錢'沒有在B類中明確定義。

在此先感謝!

+0

'g ++ -c -Wall test.cpp'沒有提供任何錯誤。 –

+0

@Joachim Isaksson你是對的。這是有效的。謝謝。 – Brian

回答

2

這是有效的,是的。

儘管B未明確定義Money,但它已公開聲明(: public A)它已從A繼承。此外,由於A的定義是Money是公開的,因此B將有Money作爲公共成員。

+0

「這是你正在尋找的答案」:) – Raxvan

+0

謝謝你的回答山姆! – Brian

+0

@Raxvan右。謝謝。 – Brian

0

公共(或受保護)基類的所有公共和受保護成員都是派生類的可訪問成員。 「成員」包含成員變量,成員函數和成員類型,「類型」包含類型別名和新定義的類型。

所以確實會員A::Money也可作爲B::Money

+0

謝謝〜非常好的總結:) – Brian