C++——友元函数与友元类
- 定义
友元提供了一种 普通函数或者类成员函数 访问另一个类中的私有或保护成员的机制。
优点:可以访问类的私有成员
缺点:破坏了类的封装性
-
使用场景
当两个类之间深度耦合,A类需要访问B类的私有成员变量此时有以下几种方法
- 方法一:将B的私有成员变量改为public属性,但这明显不合理,要求是只想让A可以访问到
- 方法二:给每个成员加一个set和get方法,不好的地方变相的把私有成员变成了公有,set和get的方法代码量也不小
- 方法三:将A声明为B的友元类
三种方法可以看出第三种会更符合要求一点
-
代码示例
#include<iostream>
#include<string>
using namespace std;
class person;
class dog{
private:
string behav;
public:
friend class person;
dog(){
behav = "跑步";
}
};
class person{
private:
dog *m_dog;
public:
person() {
m_dog = new dog();
}
void per_behav() {
cout<<"遛狗 dog"<<m_dog->behav;
}
};
int main() {
person p;
p.per_behav();
return 0;
}