看板 C_and_CPP 關於我們 聯絡資訊
我有一個專門用來存資料的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
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)