首頁  >  文章  >  後端開發  >  如何存取 C 類中定義的友元函數?

如何存取 C 類中定義的友元函數?

Barbara Streisand
Barbara Streisand原創
2024-11-06 22:22:02348瀏覽

How to Access Friend Functions Defined in a Class in C  ?

存取類別中定義的友元函數

在C 中,友元函數在類別內聲明,但可以存取類別的私有和受保護成員。考慮以下程式碼片段:

<code class="cpp">class A {
    friend void fun(A a);
    friend void fun2();
    friend void fun3();
};

void fun3() {
    std::cout << "I'm here3" << std::endl;
}</code>

存取 fun(A) 函數可以正常工作,因為它有一個 A 類型的參數,允許參數依賴查找找到它。但是,存取全域函數 fun2() 和 fun3() 時存在問題。

類別內宣告 fun2 使其成為友元函數,但未在全域範圍內宣告它。因此,在類別外存取 fun2() 時:

  • fun2();導致錯誤。
  • A::fun2();也會導致錯誤。

要解決此問題,正確的方法是在類別外部定義所有友元函數,並使它們成為該類別的明確友元:

<code class="cpp">class A {
    friend void fun(A a);
    friend void fun2();
    friend void fun3();
};

void fun(A a) { std::cout << "I'm here" << std::endl; }
void fun2() { std::cout << "I'm here2" << std::endl; }
void fun3();</code>

定義這種方式的friend函數允許在類別內部和外部存取它們。

以上是如何存取 C 類中定義的友元函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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