存取類別中定義的友元函數
在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() 時:
要解決此問題,正確的方法是在類別外部定義所有友元函數,並使它們成為該類別的明確友元:
<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中文網其他相關文章!