2012-11-12 93 views
0

時,我有一個類,我使這個類的一個對象,例如:C++和類對象名稱

class Sample{ 
    ... 
    }; 

    int main(){ Sample object1; ...} 

是對象只是一個地址,它的名字嗎?當我發送類對象名稱作爲參數遞歸的函數,我只是發送地址不復制整個對象在內存中?

+1

沒有,除非參數的函數的引用'(採樣和OBJ)'或'指針(樣品* PTR)'你調用拷貝構造與遞歸調用每一個。在每次通話中,原稿保持不變。 – WhozCraig

+0

@Vilo:那裏的[無效]代碼沒有遞歸。 –

+0

@LightnessRacesinOrbit那裏我再次回答一個問題,而沒有閱讀代碼(即不匹配= P) – WhozCraig

回答

5

名稱不是地址而是名稱。它存在於源代碼和編譯中,但除此之外根本不存在(有點)。它是一種語義結構,而不是記憶中的價值。

發生什麼一個對象,它的名字你使用你的代碼可以在你的C++書籍中找到的規則。一般而言,副本默認執行—以避免您通過引用傳遞的副本,或將指針傳遞給對象。

+0

當我創建數組SampleArray [10]時,我提到了像數組一樣的名稱,它的名稱SampleArray用作參數將內存地址發送到SampleArray [0]。 所以對於「Sample object1;」我必須用函數(&object1)啓動函數;並用函數(Sample * object2){}來執行它? – Vilo

+0

或者:http://stackoverflow.com/questions/1896369/how-to-use-a-class-object-in-c-as-a-function-parameter? – Vilo

+1

@Vilo:這是因爲在大多數情況下(例如在你的例子中,因爲你不能傳遞數組),數組表達式可以隱式轉換爲指向其第一個元素的指針。但是,數組變量仍然代表整個數組。 – newacct