免費開始練習
司法三等申論題 106年 [檢察事務官電子資訊組] 程式語言

第 四 題

四、請問下面的 C++ 程式經由編譯器編譯時,是否有錯誤發生?若有錯誤,錯誤為何?若無錯誤,執行此程式印出的結果為何?(10 分) #include class A{ protected: int X; public: A(){ X = 1; } }; class B : public A { private: int X; public: B(){ X = 200; } }; class C : public B { public: void printC() { printf("X is %d.\n", X); } };
📝 此題為申論題

思路引導 VIP

看到類別多重繼承與同名變數,首先思考 C++ 的「名稱尋找規則(Name Lookup)」與「存取修飾詞(Access Modifiers)」限制。觀察衍生類別 C 呼叫變數 X 時,編譯器會先在父類別 B 找到 private 的 X 而阻斷了向 A 尋找的路徑,進而因權限不足產生編譯錯誤。

🤖
AI 詳解 AI 專屬家教

【破題】本程式在編譯階段將會發生錯誤。核心考點為 C++ 繼承機制中的「名稱尋找規則(Name Lookup)」與「存取控制(Access Control)」。 【論述】 一、編譯錯誤原因

▼ 還有更多解析內容

升級 VIP 解鎖