以任何方式危險嗎?我不知道其他的做法,但似乎很可疑。危險的做法?
class cA
{
public:
cA(){}
~cA(){}
int a;
//say class have tons of members..
};
int _tmain(int argc, _TCHAR* argv[])
{
cA obj;
cA *ptr = new cA;
*ptr = obj;
//ofc there is a 'delete ptr;' after
}
如果我記得沒錯的C++這意味着cA
對象將被創建並ptr
將指向它,我必須這樣做,以插入長壽命容器(vector<cA*>
)。
將obj的內容從堆棧複製到堆的方式有效嗎?
編輯可能的解決方案?
class cA
{
public:
cA(){}
~cA(){}
int a;
void Copy(cA & ref)
{
a = ref.a;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
cA obj;
cA *ptr = new cA;
ptr->Copy(obj);
取決於其他成員。如果班級擁有資源,是的。記錄三條規則。 –
關於資源的好處,關於如何安全完成的好主意?我想創建一個'Copy(cA&a)'方法並手動複製所有成員。 –
@ViniyoShouta:只使用標準拷貝構造函數(隱式生成或用戶定義)。正如Luchian所指出的那樣,你需要了解什麼是[三規則](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-ree)(或C + +11)。 – syam