3 賦值運算子函式執行時機詳解

2021-10-24 05:29:04 字數 656 閱讀 9446

#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...