【C++深度探索】继承机制详解(二)-1.继承与友元

时间:2024-07-09 07:35:01

基类的友元关系不能被子类继承,也就是说基类友元不能访问子类私有和保护成员

在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;
}

结果如下:

在这里插入图片描述

因此,友元函数不能被继承。每个类都需要单独定义其自己的友元函数。