民國112年 第2梯次 電腦軟體設計(C++)乙級 學科
第69題
下列有關C++的敘述那些是正確的?
題目
下列有關C++的敘述那些是正確的?
- (1) 沒有設置複製建構子的類別仍然可以進行兩物件複製
- (2) 每個類別都需要一個複製建構子(Copy Constructor)
- (3) 通常類別中包含指標(Pointer) 成員,並在宣告物件時需要做物件內容之複製,則需要宣告一複製建構子
- (4) 通常類別中包含陣列成員,並在宣告物件時需要做物件內容之複製,則需要宣告一複製建構子
官方答案
(1) 沒有設置複製建構子的類別仍然可以進行兩物件複製、(3) 通常類別中包含指標(Pointer) 成員,並在宣告物件時需要做物件內容之複製,則需要宣告一複製建構子
解析
C++編譯器會為類別自動產生預設複製建構子,逐一把成員複製到新物件,所以沒有自行宣告仍可複製,1正確、2錯誤。若類別含指標成員,預設複製只會複製指標值,造成兩個物件指向同一塊記憶體,容易重複釋放或互相干擾,需自訂深層複製,3正確。陣列成員的預設複製會逐元素複製,通常不必只因有陣列就宣告複製建構子,4錯誤。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。