首頁 >後端開發 >C++ >C++ 友元函式能存取哪些型別成員?

C++ 友元函式能存取哪些型別成員?

王林
王林原創
2024-04-15 17:09:01939瀏覽

在 C 中,友元函數可以存取類別的所有公用、受保護和私有成員,但私有成員的存取受限,只能在類別的成員函數呼叫時進行。

C++ 友元函数能访问哪些类型成员?

C 友元函數可以存取哪些型別成員?

什麼是友元函數?

友元函數是 C 中一種特殊的函數,它可以存取一個類別的 private 和 protected 成員。友元函數的聲明必須在類別定義的外部。

友元函數可以存取的類型成員

友元函數可以存取以下類型成員:

  • public 成員: 友元函數可以存取類別的所有public 成員。
  • protected 成員: 友元函數可以存取類別的所有 protected 成員。
  • private 成員: 友元函數可以存取類別的 private 成員,但只有當友元函數被該類別的成員函數呼叫時。

實戰案例

考慮以下程式碼:

class MyClass {
private:
    int m_num;

public:
    MyClass(int num) : m_num(num) {}

    friend void print_num(MyClass& obj) {
        std::cout << obj.m_num << std::endl;
    }
};

int main() {
    MyClass obj(42);
    print_num(obj);  // 友元函数访问私有成员
    return 0;
}

輸出結果:

42

在這個範例中,print_num () 是MyClass 的一個友元函數。它可以存取私有成員 m_num,即使它不是 MyClass 的成員函數。

受限存取

需要注意的是,友元函數對 private 成員的存取受到限制。友元函數只能在該類別的成員函數呼叫時存取 private 成員。也就是說,友元函數不能直接從外部存取 private 成員。

以上是C++ 友元函式能存取哪些型別成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn