Q141.
下列那些C++指令需要使用複製建構子(Copy Constructor)?
電腦軟體設計(C++) · 乙級 · C++ · Q141
難易度分析
3 / 5
本題採複選形式,要求考生必須能全面分析多個程式碼片段,並精確區分物件初始化與後續賦值等不同生命週期階段的行為,增加了判斷的複雜度。
正確答案 (複選):②, ③
- ② 乙:當物件以傳值方式(pass by value)作為函式參數傳遞時,系統會自動呼叫複製建構子來建立參數的副本,以確保原始物件與副本相互獨立。
- ③ 丙:當函式以傳值方式回傳物件時,會呼叫複製建構子建立回傳值的臨時副本(temporary object),此為 C++ 標準規範的物件生命週期行為。
錯誤選項解析
- ① 甲:此情境未觸發複製建構子的呼叫條件,可能是以傳參考(pass by reference)方式傳遞物件,或僅為一般變數宣告,不涉及物件的複製初始化。
- ④ 丁:此情境屬於指派運算子(operator=)的操作,而非複製建構子的呼叫時機。複製建構子用於初始化階段,指派運算子用於已存在物件之間的賦值,兩者機制不同。
Learning Tip
"複製建構子的三大觸發時機為:①物件以傳值方式傳遞給函式、②函式以傳值方式回傳物件、③以既有物件初始化新物件。常考陷阱為混淆複製建構子與指派運算子的差異,前者發生於物件建立時,後者發生於物件已存在後的賦值操作。實務上建議善用傳參考(const reference)避免不必要的複製建構子呼叫以提升效能。"
學員答題分佈
①甲0%
②乙0%
③丙0%
④丁0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!