用c++实现友元类,友元函数教师类是学生类的友元类,学生类中一个函数是教师类的友元函数,学生评分可以修改教师绩效
时间: 2024-11-18 09:27:19 浏览: 1
在 C++ 中,友元是一种特殊的关系,允许某个类访问另一个类的私有成员。友元类和友元函数主要用于实现数据封装的突破,但通常被认为不是好的设计实践,因为它增加了代码复杂性和潜在的风险,如滥用。
首先,我们定义一个名为 `Teacher` 的友元类,然后声明 `Student` 类的成员函数 `evaluate()` 作为该教师类的友元函数:
```cpp
// Teacher.h
class Teacher {
public:
int performance; // 教师绩效
private:
friend class Student; // 宣告 Student 友元
};
// Student.h
class Student {
public:
void evaluate(Teacher& teacher); // 学生评价函数,friend 函数
private:
// 学生其他成员...
};
```
在 `Student.cpp` 文件中实现 `evaluate()` 函数:
```cpp
#include "Teacher.h"
void Student::evaluate(Teacher& teacher) {
// 让学生能够修改教师绩效
teacher.performance += getScore(); // 假设 getScore() 是从学生获取评分的方法
}
```
当一个 `Student` 对象调用 `evaluate()` 时,它可以直接操作教师对象的私有 `performance` 成员。但是请注意,这可能导致数据隐藏原则的破坏,因为友元关系打破了封装。在实际项目中,如果需要共享数据,通常会寻找更合适的设计模式,比如通过提供公共接口或使用设计模式如策略模式。
阅读全文