2014-01-28 47 views
0

有什麼辦法可以在C++中實現拷貝構造函數,它只拷貝一些特定的成員並實現其他成員的移動。C++中是否有任何部分拷貝構造函數?

例如,我有一個類

class partialCopy 
{ 
    int a; 
    int largeArray[1000] ; 
} 

現在使用移動構造函數假設我要保持對象largeArray兩者之間只有一個副本,並使用副本我可以保持整數的單獨副本相同的兩個之間對象。

編碼時可能會出現這種情況。

任何人都可以分享這個想法嗎?

+1

這將是無效的,你需要使用一個指針,而不是一個數組這個工作。 –

+1

請參閱['std :: shared_ptr'](http://en.cppreference.com/w/cpp/memory/shared_ptr) – Erbureth

+3

複製構造函數完全由其簽名定義,而不是由它的功能定義。你可以寫你自己的拷貝構造函數,做任何你想做的事情,從無到有,將所有事情複製到發動核攻擊。當然,你要確保它和其他同學一起工作。 –

回答

5

這對於智能指針工作:

class partialCopy { 
    int a; 
    std::shared_ptr<int, std::default_delete<int[]> > array; 
}; 

這樣你就不需要擔心這些事情 - 默認生成的特殊成員函數會做正確的事情你。