php中文网

C++ 中如何正确声明和使用友元类

php中文网

友元类是一种可访问其他类私有成员的特殊类。声明友元类时使用 friend 关键字,如:friend class friendclass; 在友元类中,可通过作用域解析运算符 (::) 访问友元类的私有成员:friendclass::accessprivatemember(outer); 实战案例:在班级管理系统中,teacher 类被声明为 student 类的友元类,允许 teacher 访问 student 的考试成绩(私有成员)。

C++ 中友元类的声明和用法

简介

友元类是一种特殊类型的类,它可以访问另一个类的私有成员。友元类用于在不同类之间建立协作,特别是在复杂的设计中。

立即学习“C++免费学习笔记(深入)”;

声明友元类

要声明一个友元类,请使用 friend 关键字,后跟类名:

class OuterClass {
public:
  // ...
private:
  // ...

  friend class FriendClass; // 声明 FriendClass 为 OuterClass 的友元类
};

访问友元类的成员

在友元类中,可以使用作用域解析运算符 (::) 来访问友元类的私有成员:

class FriendClass {
public:
  void accessPrivateMember(OuterClass& outer) {
    cout << outer.private_member << endl; // 访问 OuterClass 的私有成员 private_member
  }
};

实战案例

假设我们有一个班级管理系统。我们有一个 Student 类和一个 Teacher 类,用于存储学生和老师的信息。为了允许老师访问学生的考试成绩(私有成员),我们将其声明为 Teacher 类的友元类:

Student.h

class Student {
public:
  // ...
private:
  int exam_score; // 学生的考试成绩

  friend class Teacher; // Teacher 类为 Student 的友元类
};

Teacher.h

class Teacher {
public:
  void viewStudentExamScore(Student& student) {
    cout << student.exam_score << endl; // 访问 Student 的私有成员 exam_score
  }
};

main.cpp

int main() {
  Student student1;
  // ... 初始化学生数据
  
  Teacher teacher1;
  teacher1.viewStudentExamScore(student1); // 老师查看学生成绩

  return 0;
}

通过声明友元类,我们允许 Teacher 类访问 Student 类的私有成员,从而实现了不同类之间的协作。

以上就是C++ 中如何正确声明和使用友元类的详细内容,更多请关注php中文网其它相关文章!