第十一章、友元
在 C++ 的语法中,友元(friend)是指让声明的一个函数、成员函数或类可以访问该类的私有和保护成员。
友元的作用
让全局函数、其他类的成员函数或其他类可以访问该类的私有和保护成员。
友元是一种通过关键 friend 来实现的声明。
关键字
friend
友元声明的分类
- 友元函数
- 友元成员函数
- 友元类
1. 友元函数
友元函数是指声明一个或多个全局函数作为该类的特殊函数,这些函数可以访问该类的私有或保护成员。
友元函数声明的语法
class 类名 {
// 友元函数的声明语法
friend 返回类型 函数名(形式参数列表);
};
示例
让全局函数 show_parent_info 成为 Children 类的友元函数,让其能够访问 Children 类的全部成员。
// filename: friend1.cpp
#include <iostream>
#include <string>
// 父亲类
class Parent {
public:
Parent(const std::string &n) :name(n), money(0) { }
private:
std::string name;
int money; // 钱数
// 友元函数(声明 show_parent_info 可以访问本类成员)
friend void show_parent_info(class Parent & prt);
};
// 全局函数,此函数会访问 Parent 类内的成员变量
void show_parent_info(class Parent & prt) {
std::cout << prt.name << "有钱" << prt.money << "元\n";
}
int main(int argc, char * argv[]) {
Parent p1("老张");
show_parent_info(p1);
return 0;
}
编译和运行结果如下:
weimz@mzstudio:~$ g++ -o friend1 friend1.cpp
weimz@mzstudio:~$ ./friend1
老张有钱0元