首頁 > 後端開發 > C++ > C++ 友元函數詳解:如何宣告友元類別?

C++ 友元函數詳解:如何宣告友元類別?

王林
發布: 2024-04-28 15:00:02
原創
651 人瀏覽過

在 C 中,友元類別允許一個類別的所有成員函數存取另一個類別的私有成員。宣告友元類別時,使用 friend class 關鍵字,例如:OuterClass 宣告 內層類別 為友元類別:friend class 內層類別;只有 內層類別 中的成員函數可以存取 OuterClass 的私有成員。

C++ 友元函数详解:如何声明友元类?

C 友元函數詳解:如何宣告友元類別

前言

在C 中,友元關係是一種允許非成員函數存取類別私有成員的強大機制。友元類別是友元關係的一種特殊形式,它允許一個類別的所有成員函數都存取另一個類別的私有成員。

友元類的聲明

要聲明一個友元類,需要在該類的定義中使用 friend 關鍵字。語法如下:

class OuterClass {
    // 成员变量和函数

    friend class InnerClass;
};
登入後複製

這將允許 InnerClass 中的所有成員函數存取 OuterClass 的私有成員,而其他類別則無法存取。

實戰案例

讓我們考慮一個實際範例,其中OuterClass 表示一個包含敏感資料的類,而內層類 表示一個需要存取該資料的實用程式類別。

OuterClass:

class OuterClass {
private:
    int secretData;  // 敏感数据

public:
    // 可以公开访问的数据和方法
};
登入後複製

內層類別:

class InnerClass {
    friend class OuterClass;  // 声明友元类

public:
    void printData(OuterClass& outerObj) {
        // 访问OuterClass的私有成员 secretData
        cout << "敏感数据:" << outerObj.secretData << endl;
    }
};
登入後複製

在這種情況中,只有InnerClass 中的成員函數可以存取OuterClasssecretData 成員。其他類別無法存取該私有成員。

注意:

  • 友元類別是單向關係。 OuterClass 只能存取 內層類別 的公共成員,而 內層類別 可以存取 OuterClass 的所有成員。
  • 友元類別可以是類別模板或類別實例化。
  • 可以透過在類別定義中使用 friend class* 語法將多個類別指定為友元。

以上是C++ 友元函數詳解:如何宣告友元類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板