基本上,在它的重載賦值操作符中調用一個類的構造函數是否可以接受的編程習慣/風格?如果不是,爲什麼不呢?在重載賦值運算符中調用構造函數?
實施例:
所以我有一個類,其具有3名數據成員,被稱爲「價值」的動態int數組,其保持了大量的數字,一個int length
其指示在數的位數,&其指示號碼(動態數組的大小)的最大長度的int maxLength
這是我的構造與PARAM INT:
bigInt::bigInt(const int &rhs){
//turn num_ into a string 'num'
stringstream ss;
ss << num_;
string num = ss.str();
length = strlen(num.c_str());
maxLength = (length - (length%16)) + 16;
value = new int[maxLength];
for(int i=1; i<=length; i++){
value[i-1] = num.at(length-i) - '0';
}
}
這是我的重載阿西gnment運營商在其右手邊是一個普通的INT 此方法調用構造函數:
bigInt bigInt::operator=(const int &rhs){
*this = bigInt(rhs);
return *this;
}
編輯:我想我應該有不同的措辭。我不是故意的拷貝構造函數,而是一個普通的構造與非類實例參數和重載賦值運算符,其中RHS是不是同一類型的賴氨酸
你將如何做到這一點,它會如何幫助? – 2013-04-04 13:22:37
一個例子會很有用。 – sharptooth 2013-04-04 13:22:40
檢查瞭解詳細信息:http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom – SomeWittyUsername 2013-04-04 13:30:32