推 littleshan:不行 02/11 15:06
測試過後發現在vc2008下這樣做是ok的
成員的記憶體是連續的所以直接抄過去再修正就好了
不過有沒有比較好的方法?
像是在assignment operator中有沒有辦法先呼叫default assignment operator
查的過程中每個人都會說不要memcpy class
但是一個一個設很麻煩,還可能忘記改copy constructor之類的
※ 編輯: azureblaze 來自: 61.219.157.175 (02/11 17:07)
我有一個專門用來存資料的class
其中大部份都是POD type,也有一些pointer
class foo
{
public:
int a;
int b;
....
bar* x;
bar* y;
....
}
他的成員相當多,而且因為還在開發階段所以常常變動
我在寫copy constructor、assignment時能不能直接
foo::foo(const foo &f){
memcpy(this,*f,sizeof(foo);
//然後再手動copy其他的
x = new bar(*(f.x));
y = new bar(*(f.y));
...
}
我知道有virtual function的時候memcpy會直接讓他爆炸,
但是不知道一般的class能不能這樣做?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.219.157.175