友元函數的繼承性當子類別繼承具有友元函數的類別時:子類別無法繼承友元函數。父類別的友元函數可以存取子類別的私有成員。子類別的友元函數無法存取父類別的私有成員。
友元函數對類別的繼承性影響
前言
友元函數是一種特殊的C 函數,它可以在類別的作用域之外存取該類別的私有成員。當涉及到類別的繼承時,理解友元函數的行為至關重要。
友元函數與繼承
當子類別繼承一個有友元函數的類別時,下列規則適用:
實戰案例
考慮以下範例程式碼:
#include <iostream> class Base { friend void print(Base& b); // 父类友元函数 private: int x; }; class Derived : public Base { friend void access(Derived& d); // 子类友元函数 private: int y; }; void print(Base& b) { std::cout << b.x << std::endl; } // 父类友元函数访问私有成员 x void access(Derived& d) { std::cout << d.x << " " << d.y << std::endl; } // 子类友元函数访问私有成员 x 和 y int main() { Base b; b.x = 10; print(b); // 输出:10 Derived d; d.x = 20; d.y = 30; access(d); // 输出:20 30 print(d); // 输出:20 }
在這個範例中:
Base
有一個友元函數print()
,它可以存取x
私有成員。 Derived
有一個友元函數 access()
,它可以存取父類別私有成員 x
。 Derived
的物件d
可以被父類別Base
友元函數print()
訪問,但是無法存取父類別的私有成員x
。 以上是友元函數對類別的繼承性有什麼影響?的詳細內容。更多資訊請關注PHP中文網其他相關文章!