C+±学习记录-面向对象-友元1.概论

在类中,有一些私有、受保护属性也想让一些特定的函数或类进行访问,就要用到友元

友元的关键字为 friend

友元实现的方式:

1.全局函数做友元

2.类做友元

3.成员函数做友元

友元的本质是:签发通行证

示例:

1
2
3
4
5
6
7
8
9
10
11
12
class p {
public:
string name;
protected:
string age;
};

void setp(p *p1) {
p1->name = "神里绫华";
p1->age = "十八岁";
}
//此时程序会报错,age为protected权限,外部无法访问它。

此时可以在p类中为“setp”签发一张“通行证”,即友元

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class p {

friend void setp(p* p1);//将该函数设置为p类的友元

public:
string name;
protected:
string age;

};

void setp(p *p1) {
p1->name = "神里绫华";
p1->age = "十八岁";
}
//此时不会报错