C++友元类

C++友元类教程

C++ 中,我们除了可以将一个 函数 声明为友元函数,还可以将一个 声明为友元类,如果一个类是另一个类的友元类,那么友元类可以访问类的所有的私有成员。

C++友元类详解

定义

使用 friend 修饰的类,称为友元类。

语法

class ClassName { public: friend class ClassName2; }; class ClassName2 { };

说明

我们使用 friend 定义了一个友元类 ClassName2,此时 ClassName2 就可以访问。

案例

C++友元类

C++ 友元类,可以访问类的所有的私有成员

#include <iostream> #include <cstring> using namespace std; //声明教师类 class Techer; //学生类 class Student { private: string name; int age; public: Student(string name, int age); void stu_print(Techer &tech); }; //教师类 class Techer { private: string name; int age; public: Techer(string name, int age); //声明一个友元类 friend class Student; }; //Student类的构造函数的实现 Student::Student(string name, int age) { this->name = name; this->age = age; } //Techer类的构造函数的实现 Techer::Techer(string name, int age) { this->name = name; this->age = age; } //打印Student类中的私有成员和Techer的私有成员 void Student::stu_print(Techer &tech) { //用this指针访问本类的成员 cout << "Studnet Name: " << this->name << " Age: " << this->age << endl; //访问Techer类的成员 cout << "Teacher Name: " << tech.name << " Age: " << tech.age << endl; } int main(void) { cout << "嗨客网(www.haicoder.net)\n" << endl; Student stu1("HaiCoder", 110); Techer t1("Jobs", 57); stu1.stu_print(t1); return 0; }

程序运行后,控制台输出如下:

38_C friend友元类.png

我们看到,我们可以在友元类里面访问另一个类的所有的私有成员。

C++友元类总结

在 C++ 中,我们除了可以将一个函数声明为友元函数,还可以将一个类声明为友元类,如果一个类是另一个类的友元类,那么友元类可以访问类的所有的私有成员。