运用友元关系定义一个学生的类和一个成绩的类,其中使得成绩类对象可以访问学生对象的私有数据,并编程实现(数据自定义)。
时间: 2023-06-02 21:07:41 浏览: 191
好的,这是一个关于 C++ 编程的问题。以下是示例代码:
class Student;
class Score {
public:
Score(): score_(0), student_(nullptr) {}
Score(int score): score_(score), student_(nullptr) {}
void SetScore(int score) {
score_ = score;
}
void SetStudent(Student* student) {
student_ = student;
}
void PrintScore() {
std::cout << "Score: " << score_ << std::endl;
std::cout << "Student name: " << student_->name_ << std::endl;
std::cout << "Student age: " << student_->age_ << std::endl;
}
private:
int score_;
Student* student_;
};
class Student {
public:
Student(): name_(""), age_(0) {}
Student(std::string name, int age): name_(name), age_(age) {}
friend class Score;
private:
std::string name_;
int age_;
};
int main() {
Student student1("Alice", 17);
Score score1(80);
score1.SetStudent(&student1);
score1.PrintScore();
return 0;
}
在上面的代码中,我们定义了一个学生类 Student 和一个成绩类 Score。在成绩类中,我们使用了友元关系,为了让成绩对象可以访问学生对象的私有数据。具体来说,我们将 Student 类声明为 Score 的友元类,这意味着 Score 类可以访问 Student 类中的私有成员。在 Score 类中,我们保存了一个指向学生对象的指针,这样我们可以访问学生对象的私有数据。在主函数中,我们创建了一个学生对象和一个成绩对象,并将学生对象的指针保存在成绩对象中。然后,我们调用 PrintScore() 函数来打印成绩和与之关联的学生的姓名和年龄。
希望这个示例代码可以帮助你理解如何使用友元关系来访问私有数据。
阅读全文