2014-01-23 75 views
1

在C++中,如果實例化類的對象,那麼對於每個 對象,該類的所有方法都將被複制以用於新對象?C++中的對象實例

我試圖指出一個類與兩個不同的對象的方法,但我會問 與指向成員的指針。

有什麼想法?

+0

您不能實例化對象,只能實例化類型和模板... – Griwes

+0

@Griwes對象是類的實例 - 創建實例通常被稱爲實例化。 – Casey

+0

@Casey,當然,但是你正在實例化* class *,而不是對象(IOW:你正在創建一個類的實例,而不是一個對象的實例)。 – Griwes

回答

1

一個類的代碼只存在一次。

爲了獲得一個指向成員函數的指針(可能是你的方法意思),看看std::function,並將函數調用附加到不同的對象,看看std::bind

+1

這完全不是標準功能所做的。 – Puppy

+0

@DeadMG:你是什麼意思? –

+1

「方法」一詞在C++中沒有很好的定義。你的意思是暗示一個是會員的功能嗎?還是一個非靜態的?還是一個虛擬的?還是一個純粹的?爲了避免誤解,更喜歡標準化的術語:而不是'方法'說'功能'的前綴與那些相關的說明符。 –

7

在C++中,如果實例化一個類的對象,那麼對於每個對象,該類的所有方法都將被複製爲新對象?

沒有,成員函數通常沒有任何數據的拷貝。不同的隱式參數this被傳遞給任何非靜態成員函數,用於該類類型的每個對象。

6

不,那絕對是不是是真的。

類實例(對象)包含數據成員。函數成員看起來像是在「在」類中,但這只是用於範圍界定等:你的函數代碼不在類型內部「存在」,並且它肯定不存在於對象內部†


†I think it could, theoretically,因爲該標準並沒有徹底禁止它。但說實話,不。就是不行。