2014-10-05 45 views
0
#include<cstdio> 
#include<iostream> 
using namespace std; 
class A 
{ 
public: 
    int x; 
}; 
class B: public A 
{ 
}; 
int main() 
{ 
    B b; 
    b.x=5; 
    cout<<b.x<<endl; 

    return 0; 
} 

我有上面的code.it的所有好的但我想知道什麼時候我從類A繼承B類的成員變量x在類B中聲明太類似於A或類B只是獲得訪問A類的成員變量x?
在兩個不同的類中有兩個具有相同名稱的變量,或者只有一個變量,並且這兩個類的對象都有權訪問它?
如果在兩個不同的類中有兩個具有相同名稱的不同變量,那麼爲什麼當派生類的對象被聲明時,基類的構造函數被調用?派生類是否爲成員變量分配內存?

+1

有每個對象一個成員變量在這裏。 – 2014-10-05 18:42:23

+0

好吧,我剛剛舉了一個例子...... – 2014-10-05 18:44:17

+0

那麼你真正的問題是什麼呢? – 2014-10-05 18:45:09

回答

1

當您創建派生類的對象時,基類子對象被嵌入派生類對象的內存佈局中。所以,對於你的問題,只有變量是派生對象的一部分。 因爲,我們在這裏只考慮非靜態成員,每個派生對象都獲取其內存中的基類子對象。 當你創建一個基類對象時,它是代表不同對象的不同內存,並且與先前創建的派生對象無關。

希望它澄清你的疑問!

這是一個偉大的書,瞭解C++對象模型:

http://www.amazon.com/Inside-Object-Model-Stanley-Lippman/dp/0201834545/ref=sr_1_1?ie=UTF8&qid=1412535828&sr=8-1&keywords=inside+c%2B%2B+object+model

+0

絕對!謝謝 !!! :) – 2014-10-05 18:52:49

相關問題