friend
关键字可以修饰普通函数
和类成员函数
. 被修饰的函数, 可以访问类的私有
和保护
成员变量. 由于该关键字带来了很大的便利, 但也破坏了类的封装性
, 所以对其使用进行了限制:
- 友元关系不能继承.
- 友元关系是单向的.
- 友元关系不会传递.
友元函数
在类内声明, 在类外定义.
#include <iostream>
class num {
int m_a;
public:
num(int a) : m_a(a) {}
friend void show_num(num &n);
};
void show_num(num &n) { std::cout << n.m_a << std::endl; }
int main(void) {
num n{1};
show_num(n); // 输出: 1
}
友元类
在类内声明, 在类外定义.
#include <iostream>
class num {
int m_a;
public:
num(int a) : m_a(a) {}
friend class num_friend;
};
class num_friend {
public:
void show_num(num &n) { std::cout << n.m_a << std::endl; }
};
int main(void) {
num n{1};
num_friend nf;
nf.show_num(n); // 输出: 1
}
如果觉得有帮助,可以扫描右边的微信打赏码支持一下.