LONGEPASS
電腦軟體設計(C++)/C++/Q85
中等
正確率 -
Q85.

如何判斷類別的建構子(Constructor)是否執行成功?

電腦軟體設計(C++) · 乙級 · C++ · Q85

難易度分析

3 / 5

本題考查對類別建構子語法規範及其錯誤處理機制的理解。考生需辨識建構子與一般成員函式的差異,並掌握在建構過程中處理異常的標準語言特性。

正確答案:③在建構子執行失敗時引發例外,再使用try...catch 結構判斷建構子是否執行成功

③ 在建構子執行失敗時引發例外,再使用try...catch 結構判斷建構子是否執行成功:在 C++ 中,當建構子初始化失敗(如記憶體配置失敗、資源開啟失敗)時,應使用 `throw` 拋出例外,呼叫端再以 `try...catch` 區塊攔截,這是處理建構子錯誤的唯一標準做法。

錯誤選項解析

  • ① 將建構子的傳回值宣告成bool,若建構子執行成功就傳回true,否則傳回false,讓呼叫建構子的建構子程式可以利用建構子的傳回值判斷執行是否成功:C++ 建構子沒有傳回值型別,語法上不允許將建構子宣告為 `bool` 或其他任何型別,此選項違反 C++ 語言基本規範。
  • ② 無法判斷:建構子執行失敗的情況確實可以處理,標準做法是透過例外處理機制 (Exception Handling) 來偵測與回應,並非無法判斷。
  • ④ 建構子一定會執行成功:建構子在執行過程中可能遭遇資源不足、檔案開啟失敗、無效參數等情況而失敗,並非必然成功;若未妥善處理會產生半成品物件 (Half-formed Object)。
Learning Tip

"此題核心考點為 C++ 建構子無傳回值 與 例外處理機制 的結合應用。常考陷阱是誤以為建構子可回傳狀態碼,或混淆建構子與一般成員函式的行為。實務上,凡涉及動態記憶體配置、檔案 I/O、網路連線等可能失敗的操作,皆應在建構子內以 `throw` 處理異常,確保 RAII (Resource Acquisition Is Initialization) 原則不被破壞。"

學員答題分佈

①將建構子的傳回值宣告成bool,若建構子執行成功就傳回true,否則傳回false,讓呼叫建構子的建構子程式可以利用建構子的傳回值判斷執行是否成功0%
②無法判斷0%
③在建構子執行失敗時引發例外,再使用try...catch 結構判斷建構子是否執行成功0%
④建構子一定會執行成功0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目