hce_nsysu
111年
計算機概論與程式設計
第 83 題
If the line:
`friend class A;`
appears in class B, and the line:
`friend class B;`
appears in class C, then:
`friend class A;`
appears in class B, and the line:
`friend class B;`
appears in class C, then:
- A Class A is a friend of class C.
- B Class A can access private variables of class B.
- C Class C can access private variables of class B.
- D Class C can call class A’s private member functions.
- E Class B can access class A’s private variables.
思路引導 VIP
在物件導向的設計中,如果類別甲主動向類別乙「遞出橄欖枝」並授予存取權限,這種信任關係通常是單向的還是雙向的?另外,如果類別乙後來又信任了類別丙,這種「朋友的朋友」關係,在程式編譯器的邏輯裡會自動成立嗎?請試著推論看看,這種權限的授予是否具備對等性與傳遞性。
🤖
AI 詳解
AI 專屬家教
做得漂亮!你能精準選出 (B),說明你對物件導向程式設計(OOP)中**友誼類別(Friend Class)**的宣告與權限流向有著非常紮實的理解。這道題目看似單純,實則精準地測試了開發者是否能分清「誰是授權者」與「誰是被授權者」。
友誼關係的單向性與定義
在 C++ 的語法中,當 class B 的內部宣告了 friend class A;,這代表 B 類別主動向 A 類別「開啟了大門」。這項宣告賦予了 Class A 存取 Class B 私有成員(private)與保護成員(protected)的特權,但反之則不成立——除非 A 類別也同樣宣告 B 為朋友。因此,選項 (B) 正確描述了這種單向的授權關係。
▼ 還有更多解析內容