2013-09-25 81 views
0
class Base 
{ 
    int i ; 
}; 

class Derived : public Base { } ; 

int main() 
{ 
    cout << sizeof(Derived); 
} 

Output : 
4 

在基類中,因爲我是私有的,所以它不應該被繼承到派生類。因此,基類應該充當空類。 sizeof空類是1,那麼爲什麼它顯示爲4?空的派生類繼承自非空基類

+0

爲什麼要'sizeof'一個空類是1?順便說一句,它不是空的。 –

+0

「...因爲我是私人的,所以不應該繼承......」 - 胡說! – valdo

+0

P.S.如果你真的相信'我'不會被繼承,因爲它的'私人',那麼爲什麼你的'派生'繼承了它呢? – valdo

回答

4

一個Derived類仍含有iBase,它只是無法訪問,所以大小4是因爲i

0

的大小仍然是4,因爲Base大小爲4比方說,例如那Base有一個函數 public: int getI() {return i;} 那麼你就能夠調用Derived::getI(),因此派生確實需要包括專用基礎件。

-2

這裏,派生類中定義公共..意味着這裏定義的「包括:公共基礎」

由此派生類可以訪問所有公共和基礎class..it的私有成員將盡一切私有成員公開在衍生class..thus輸出i.not 1.如果4堂妹你所寫的私人而不是那麼它會給輸出1 ..