存取類別中定義的友元函數
使用友元函數時,必須了解如何定義和存取它們。由於友元函數不是類別的成員,因此在類別外部存取它們可能需要特殊考慮。
在提供的程式碼片段:
class A {
public:
friend void fun(A a){std::cout 友元函數 fun() 和 fun3() 在類別中定義,但不在全域範圍中宣告。由於參數類型為 A,因此可以使用參數相關查找 (ADL) 直接存取 fun(),但如果沒有在全域範圍內聲明,則無法存取 fun2()。
要正確存取 fun2() ,除了在類別中定義為友元函數之外,還應該全域宣告它:
class A {
public:
friend void fun(A a){std::cout 在此修改版本中,fun2()可以作為普通函數在類別外部存取。
但是,建議以通常的方式定義友元函數,在類別外部但聲明作為朋友:
class A {
friend void fun(A a);
friend void fun2();
friend void fun3();
};
void fun(A a) { std::cout 此方法可確保正確定義和宣告所有友元函數,使它們按預期可存取和使用。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3