2013-11-14 126 views
-1

我想複製一個對象到另一個對象。但我的第一個對象有一個屬性指向同一個對象內的另一個變量。例如:複製其中的指針對象到另一個對象

int* a;

我想要做的是使該對象的副本,但通過我的調試器,我可以清楚地看到,

int* a;

我原來的目標點

完全一樣地址作爲我複製的對象的int* a;,當我不希望它這樣做時。

我希望它指向自己在內存中的位置,而不是改變原始對象。

+1

你必須爲此編寫代碼。複製指針不會改變它。 –

+1

使用複製構造函數,但請確保遵循[三規則](https://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29) – clcto

+0

您可能想要檢查深層複製。 –

回答

0

您應該爲此創建一個拷貝構造函數。 基本複印操作將複製到曲面中。 (成員明智的副本)

YourClass::YourClass(const YourClass& p) { 
    x = p.x; 
    y = p.y; 
    *a = *(p.a); 
} 

你應該在構造函數的指針分配空間。

0

在這種情況下,您需要編寫一個賦值操作符和一個拷貝構造函數。我會告訴你一個更完整的文章,其中描述了兩者。如有必要,您還可以在網上搜索更多示例。 http://www.cplusplus.com/articles/y8hv0pDG/

如果你有一個C++ 11兼容的編譯器,那麼我也會考慮使用智能指針,如果我是你。

相關問題