我有兩個具有類似結構的類。在C++中複製類似的類
class A{
int a;
char *b;
float c;
A(char *str) { //allocate mem and assign to b }
};
class B{
int a;
char *b;
float c;
B(char *str) { //allocate mem and assign to b }
B(B & bref) { //properly copies all the data }
};
我想的B
的對象複製到的A
的對象。以下轉換是否正確?
A aobj("aobjstr");
B bobj("bobjstr");
bobj = aobj; //case 1
bobj = B(aobj); //case 2
情況2會工作嗎?當B的拷貝構造函數被調用時,aobj
會被正確轉換並解釋爲B &
?
編輯:那怎麼辦?
B bobj(aobj)
首先,這不是被調用的複製構造函數。您之前已經構建過它。其次,如果是的話,由於對非臨時性的非const引用,它會產生錯誤。 – chris 2013-02-21 07:15:11
你試過了嗎?你很可能會得到錯誤,爲什麼你不從一個普通的類繼承? – 2013-02-21 07:15:17
你已經知道C#或Java嗎?如果是這樣,那麼這可能會解釋這裏可能存在的誤解 - 特別是實際構造臨時對象的行'bobj = B(aobj)',將臨時對象拷貝(或試圖拷貝 - 不顯示賦值超載)從臨時對象到'bobj' ,然後丟棄臨時。原因基本上是'bobj'是實際的對象,而不是(像在Java中那樣)對對象的引用。 – Steve314 2013-02-21 07:22:26