民國112年 第2梯次 電腦軟體設計(C++)乙級 學科

第69題

下列有關C++的敘述那些是正確的?

題目

下列有關C++的敘述那些是正確的?

  1. (1) 沒有設置複製建構子的類別仍然可以進行兩物件複製
  2. (2) 每個類別都需要一個複製建構子(Copy Constructor)
  3. (3) 通常類別中包含指標(Pointer) 成員,並在宣告物件時需要做物件內容之複製,則需要宣告一複製建構子
  4. (4) 通常類別中包含陣列成員,並在宣告物件時需要做物件內容之複製,則需要宣告一複製建構子

官方答案

(1) 沒有設置複製建構子的類別仍然可以進行兩物件複製、(3) 通常類別中包含指標(Pointer) 成員,並在宣告物件時需要做物件內容之複製,則需要宣告一複製建構子

解析

C++編譯器會為類別自動產生預設複製建構子,逐一把成員複製到新物件,所以沒有自行宣告仍可複製,1正確、2錯誤。若類別含指標成員,預設複製只會複製指標值,造成兩個物件指向同一塊記憶體,容易重複釋放或互相干擾,需自訂深層複製,3正確。陣列成員的預設複製會逐元素複製,通常不必只因有陣列就宣告複製建構子,4錯誤。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料