我們可以把數字當最對象賦給另一個對象,這樣在對該賦值表達式進行計算時,首先對數字進行類型轉換,同時判斷該類的構造函數的參數是否與數字類型匹配,假如匹配則調用構造函數創建一個臨時對象,跟著將該臨時對象賦給賦值操作符左邊的對象,最後調用析構函數進行刪除臨時對象。
示例代碼如下:
#includeusing namespace std; class A { public: A(int x){i=x;cout<<"構造函數執行! "<>>>>>>>>>>>>>>>>>>>>>>\n"< >>>>>>>>>>>>>>>>>>>>>>\n"<
運行結果:
本示例有兩次類型轉換。第一次是“a=100”,該語句調用構造函數將100轉換為A類的臨時對象,然後將這個對象賦給對象a,跟著調用析構函數釋放臨時對象占用的內存。
第二次是“a=A(2)”,等號右邊的A(2)是一個強制類型表達式,這個表達式會調用A類構造函數,將括號內的2轉換成A類的臨時對象,然後再賦給左邊的對象a,跟著調用析構函數釋放臨時對象占用的內存。