C++ 中的继承和友元关系
c++server side programmingprogramming
在 C++ 中,友元关系不被继承。这意味着,如果一个父类拥有一些友元函数,那么子类将无法获得这些友元函数。
在此示例中,由于 display() 函数是 MyBaseClass 的友元函数,但不是 MyDerivedClass 的友元函数,因此会产生错误。display() 函数可以访问 MyBaseClass 的私有成员。
示例
#include <iostream> using namespace std; class MyBaseClass { protected: int x; public: MyBaseClass() { x = 20; } friend void display(); }; class MyDerivedClass : public MyBaseClass { private: int y; public: MyDerivedClass() { x = 40; } }; void display() { MyDerivedClass derived; cout << "基类的私有成员的值为:" <<derived.x << endl; cout << "派生类的私有成员的值为:" << derived.y << endl; } main() { display(); }
输出
[Error] 'int MyDerivedClass::y' is private [Error] within this context