友元
廖家龙 用心听,不照做

在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术

友元的目的就是让一个函数或者类访问另一个类中的私有成员,友元的关键字为friend

友元的三种实现:
1)全局函数做友元
2)类做友元
3)成员函数做友元

全局函数做友元:

友元类(类做友元):


成员函数做友元【为啥顺序不能变??】:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include<iostream>
**using** **namespace** std;

**class** Building;

**class** goodGay{

**public**:

Building *building;

//可访问Building中的私有成员
**void** visit();

//不可访问Building中的私有成员
**void** visit1();

goodGay();

};

**class** Building
{
**friend** **void** goodGay::visit();//表示goodGay类中的成员函数visit()作为本类的好朋友

**public**:

Building(){
SittingRoom = “客厅”;
BedRoom = “卧室”;
}

**public**:
string SittingRoom;

**private**:
string BedRoom;

};

goodGay::goodGay()
{
building = **new** Building;
}

**void** goodGay::visit()
{
cout<<“visit函数正在访问:”<<building->SittingRoom<<endl;
cout<<“visit函数正在访问:”<<building->BedRoom<<endl;
}

**void** goodGay::visit1()
{
cout<<“visit2函数正在访问:”<<building->SittingRoom<<endl;
//cout<<“visit函数正在访问:”<<building->BedRoom<<endl;
}

**int** main()
{
goodGay gg;
gg.visit();
gg.visit1();

}