基类的友元关系不能被子类继承,也就是说基类友元不能访问子类私有和保护成员
在C++的继承中,友元函数并不具有继承的特性。当一个类继承另一个类时,它只会继承基类的成员函数和数据成员,而不会继承基类中声明的友元函数。
例如:
class Student;//声明
//基类
class Person
{
public:
friend void Display(const Person& p, const Student& s);//友元函数
protected:
string _name; // 姓名
};
//子类
class Student : public Person
{
protected:
int _stuNum; // 学号
};
void Display(const Person& p, const Student& s)
{
cout << p._name << endl;//可以访问基类的成员
cout << s._stuNum << endl;//不可以访问子类的成员
}
int main()
{
Person p;
Student s;
Display(p, s);
return 0;
}
结果如下:
因此,友元函数不能被继承。每个类都需要单独定义其自己的友元函数。