#include#includeusing namespace std;
class data
; // 建構函式
data(int _data):data(_data)
// 賦值運算子過載函式
data& operator=(const int _data)
}; int main()
編譯並執行上述**,結果如下:
上述結果說明:「data2 = 1;」語句呼叫了我們提供的以int型引數(而非本類或本類的引用)為形參的賦值運算子過載函式,而「data3 = data2;」的成功執行,說明該語句呼叫了編譯器提供的預設的賦值運算子過載函式。
如果將上述**中賦值運算子過載函式去掉,重新編譯執行,結果如下:
上述結果說明,當用乙個非類a的值(如上面的int型別值)為類a的物件賦值時:
綜合上述示例內容,我們可以知道針對以下情況,需要顯式地提供賦值運算子過載函式(即自定義賦值運算子過載函式):
關於靜態建構函式執行時機
先看 1.包含靜態欄位的呼叫 class program class staticclass 結果如下 新增靜態建構函式 class program class staticclass static staticclass 結果如下 2.去掉靜態字段呼叫 static void main strin...
賦值運算子函式
賦值運算子函式的 需要關注幾點 1 是否把返回值的型別宣告為該型別的引用,並在函式結束前返回例項自身的引用 即 this 只有返回乙個引用,才可以允許連續賦值。否則如果函式的返回值void,該賦值運算子將不能做連續賦值。2 是否把傳入的引數的型別宣告為常量引用。引數宣告為引用可以避免無謂的消耗,提高...
賦值運算子函式
題目 如下為型別cmystring的宣告,請為該型別新增賦值運算子函式。class cmystring 1 經典解法,初級程式設計師 cmystring cmystring operator const cmystring str 2 考慮異常安全的解法,高階程式設計師 cmystring cmys...