[問題] memcpy用在class上
看板C_and_CPP (C/C++)作者azureblaze (AzureBlaze)時間15年前 (2011/02/11 15:04)推噓1(1推 0噓 0→)留言1則, 1人參與討論串1/2 (看更多)
我有一個專門用來存資料的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
推
02/11 15:06, , 1F
02/11 15:06, 1F
測試過後發現在vc2008下這樣做是ok的
成員的記憶體是連續的所以直接抄過去再修正就好了
不過有沒有比較好的方法?
像是在assignment operator中有沒有辦法先呼叫default assignment operator
查的過程中每個人都會說不要memcpy class
但是一個一個設很麻煩,還可能忘記改copy constructor之類的
※ 編輯: azureblaze 來自: 61.219.157.175 (02/11 17:07)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章