若example是已定義的類,在程序結束之前,共調用3個對象?若example是已定義的類,在程序結束之前,共調用3個對象?#include “exemple”main(){example x(0);x=5;x.print();x=example(10);x.print();}我怎么只看出一個對象是example x(0)還有哪兩個?
熱心網友
1。 example x(0); 處調用構造函數一次初始化x;2。 x=5; 處編譯器隱式調用構造函數example(5)一次初始化一個臨時對象賦值給x;3。 x=example(10); 處顯式調用構造函數example(10)一次初始化一個臨時對象賦值給x;所以一共調用了3次對象。回答補充:顯式調用指代碼編寫者直接在代碼中寫出函數調用表達式,如example x(0); 和x=example(10); 就是直接寫出了構造函數的調用表達式。隱式調用是指C++編譯器對代碼進行編譯優化后在生成的執行代碼中加入的函數調用, 如C++編譯器對 x=5;進行編譯優化后會生成近似于x=example(5);這樣的代碼,對構造函數進行一次調用。注意,你這道題沒有給出類example的定義,就很難給出一個標準答案,如果類example實現了const example& operator =(int nParam)運算符,則x=5;處不會隱式調用構造函數,那就一共只調用了2次對象。這樣的出題不太嚴密。你的C++還需要加強學習,給你推薦兩本書--和。
熱心網友
x=5;這樣也定義了,那個等號被重載了.x=example(10);這個當然也是了.