-
首先,您需要了解建構函式的用途。
建構函式主要用於初始化物件、分配記憶體等。
其次,你需要了解預設的功能機制就足夠了嗎?
預設建構函式,當你不寫建構函式時,會自動新增它,也就是說,你不需要寫它,編譯器會自己新增它,當你初始化物件時,會隱式呼叫預設建構函式。 當你編寫其他預設函式時,預設函式將不再隱式呼叫,而是呼叫你編寫的建構函式,但通常編寫你自己的建構函式,並顯示預設建構函式。 這是建構函式的過載!
第三,複製建構函式是做什麼的?
通常使用物件為物件賦值,還有一些其他用途。
乙個簡單的,你知道建構函式的語法嗎?? 我不知道這個,所以我會自己讀這本書。
預設建構函式:
complex(){
引數的建構函式:
complex(double real,double image)rea;
Copy 建構函式:
complex(const complex& obj ){rea=;
image=;
將以上三個函式新增到課程中,就可以開始了!! 測試是自己寫在main函式裡的,沒關係
-
複雜類宣告中沒有顯式建構函式,需要補充提到的三個建構函式:
1.不帶引數的建構函式。
complex()
real = 0;
image = 0;
2.具有引數的建構函式。
complex(double r, double i)real = r;
image = i;
3.Copy 建構函式:
complex(const complex & ob) constreal = ;
image = ;
向 main 函式新增乙個語句,用於測試三個建構函式:
1. complex c;
2. complex c(1, 3);
3. complex d = c;
-
僅當未定義建構函式時,才會自動生成預設建構函式。
複製建構函式也是乙個建構函式。
如果未顯示任何定義,則複製建構函式會自動生成預設複製建構函式。
如果項 b 定義了帶有引數的建構函式,則它不會生成預設建構函式,因此這是錯誤的。
-
錯誤的事情是:b
C++ 標準是這樣描述的:
只有當類沒有定義建構函式時,編譯器才會自動生成預設建構函式”。
所以你可以看到 A 是對的,B 是錯的。
此外,C++標準對此進行了如下描述:
只有當乙個類沒有定義複製建構函式時,編譯器才會自動生成預設的複製建構函式。
所以 c、d 是對的。
-
這是建構函式和析構函式的基本定義問題。
如果未定義建構函式和析構函式,則編譯器預設生成它們。
b.如果不定義不帶引數的建構函式,則編譯器將始終生成預設建構函式。
不管有沒有引數,只要有建構函式,編譯器就不會生成預設的建構函式。
-
這個問題其實可以通過排除來完成,對於選項中具有絕對意義的句子來說,這是最可疑的。
方法過載也可以應用於 c 中的建構函式。 C 具有預設建構函式,您還可以使用引數定義建構函式。 建構函式必須與類同名,並且不能具有返回值。 因此,C 建構函式過載等價於不同數量的引數方法過載。 >>>More
這部電影與《肖申克的救贖》有一些相似之處,後者也是乙個追求自由的“罪犯”的故事,但具有強烈的實驗性和隱喻性,遠遠超出了現實的象徵意義。 >>>More
房東**的樣子真的傷了我,全域性太多了,函式定義和宣告引數沒有型別化、判斷素數是否真的返回雙精度、printf使用錯誤。我就不多說了,給大家修改一下,編譯執行都成功了**如下: >>>More