阿摩線上測驗 登入

申論題資訊

試卷:111年 - 111 關務特種考試_四等_資訊處理:程式設計概要#107605
科目:程式設計
年份:111年
排序:0

題組內容

一、有關 C++物件導向程式設計,請回答下列問題:

申論題內容

(一)基底類別的成員中,何者可以在基底類別和衍生類別中定義,使基底類 別和衍生類別的朋友可以存取?請試舉二者。

詳解 (共 2 筆)

詳解 提供者:114年高考上榜

public,

protected

詳解 提供者:hchungw

在C++中,基底類別(Base class)的成員可由其派生類別(Derived class)訪問的範疇由該成員的訪問修飾符決定。如果想要讓基底類別和衍生類別的朋友(friend class或friend function)都能夠訪問特定的成員,那麼這些成員應當被標記為protected或public。
protected 成員:這些成員可以被基底類別、衍生類別以及基底類別和衍生類別的朋友訪問。protected修飾符允許派生類別內部的成員函數訪問它,但不允許外部的其他類別或函數訪問它(除非它們是朋友)。
public 成員:這些成員可以被任何人訪問,包括基底類別、衍生類別、其朋友以及其他任何函數或類別。
以下是一個簡單的例子來展示這一點:

class Base {
protected:
    int protectedMember;
public:
    int publicMember;
    friend void BaseFriendFunction(Base &b);
};
class Derived : public Base {
    friend void DerivedFriendFunction(Derived &d);
};
void BaseFriendFunction(Base &b) {
    // 可以訪問基底類別的protected和public成員
    b.protectedMember = 10;
    b.publicMember = 20;
}
void DerivedFriendFunction(Derived &d) {
    // 可以訪問衍生類別通過繼承得到的protected和public成員
    d.protectedMember = 30;
    d.publicMember = 40;
}
在這個例子中,BaseFriendFunction 是 Base 的一個朋友函數,能夠訪問 Base 類別中的 protected 和 public 成員。DerivedFriendFunction 是 Derived 的朋友函數,它能夠通過 Derived 類別訪問 Base 類別中繼承而來的相同成員。這種存取權限滿足了題目中對於朋友函數存取權限的要求。