运用友元关系定义一个学生的类和一个成绩的类,其中使得成绩类对象可以访问学生对象的私有数据,并编程实现(数据自定义)。 提示: 为使成绩对象可以访问学生对象的私有数据,在定义学生类时,将成绩类声明为他的友元类。
时间: 2024-11-09 13:27:55 浏览: 29
在C++中,我们可以运用友元(Friend Class)的概念来实现这个需求。友元允许一个类访问另一个类的私有成员。下面是一个简单的例子:
```cpp
class Student {
private:
std::string name;
int age;
// ...其他私有变量...
public:
// 定义友元关系,让Score类能访问Student的私有成员
friend class Score;
// 学生类的构造函数、获取数据等方法...
Student(const std::string& name, int age) : name(name), age(age) {}
std::string getName() const { return name; }
int getAge() const { return age; }
// 可能需要的方法...
};
class Score {
private:
// 成绩类的数据...
int score;
public:
// 声明为Student的友元,可以访问name和age
void setGrade(Student student, int grade) {
student.score = grade;
// 打印名字和成绩
std::cout << "Score for " << student.getName() << ": " << student.score << std::endl;
}
};
int main() {
// 创建学生对象
Student s("Alice", 18);
// 创建成绩对象并设置学生分数
Score sc;
sc.setGrade(s, 95);
return 0;
}
```
在这个例子中,`Score`类通过作为`Student`类的朋友,可以直接访问`Student`的私有成员`name`和`age`。注意,尽管友元能够访问私有数据,但这并不意味着应该滥用友元,因为它破坏了封装原则,应尽量保持类的内部结构简洁和安全。
阅读全文