型別中的賦值運算子函式的設計需要考慮以下幾點:
把返回值的型別宣告為該型別的引用,並在函式結束前返回例項自身的引用(保證連續賦值)。
把傳入的引數的型別宣告為常量引用(避免呼叫拷貝建構函式)。在拷貝賦值運算子函式中,如果不改變引數的狀態,則設定 const 關鍵字。
釋放自身已有的動態分配的記憶體(防止記憶體洩露)。
如果傳入引數和當前例項 *this 是同乙個例項,則不進行賦值,直接返回。
保證異常安全性。動態記憶體分配可能會產生異常。
class myclass ;
myclass& myclass::operator=(const myclass& arg) // 離開tmp的作用域,析構函式被自動呼叫
myclass& myclass::operator=(myclass&& arg)
賦值運算子函式
賦值運算子函式的 需要關注幾點 1 是否把返回值的型別宣告為該型別的引用,並在函式結束前返回例項自身的引用 即 this 只有返回乙個引用,才可以允許連續賦值。否則如果函式的返回值void,該賦值運算子將不能做連續賦值。2 是否把傳入的引數的型別宣告為常量引用。引數宣告為引用可以避免無謂的消耗,提高...
賦值運算子函式
題目 如下為型別cmystring的宣告,請為該型別新增賦值運算子函式。class cmystring 1 經典解法,初級程式設計師 cmystring cmystring operator const cmystring str 2 考慮異常安全的解法,高階程式設計師 cmystring cmys...
賦值運算子函式
型別宣告如下 class cmystring 請為上型別新增賦值運算子函式.經典解法 cmystring cmystring operator const cmystring str 考慮異常安全性解法 cmystring cmystring operator const cmystring str...