forked from bbw7561135/Numerical-Algorithms-2020
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclass_08.cpp
More file actions
226 lines (136 loc) · 3.31 KB
/
class_08.cpp
File metadata and controls
226 lines (136 loc) · 3.31 KB
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#include <iostream>
using namespace std;
//生活中你的家有客厅(Public),有你的卧室(Private)
//客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去
//但是呢,你也可以允许你的好闺蜜好基友进去。
//在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术
//友元的目的就是让一个函数或者类 访问另一个类中私有成员
//友元的关键字为 ==friend==
//友元的三种实现
//全局函数做友元
//类做友元
//成员函数做友元
//class Building
//{
// //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容
// friend void goodGay(Building * building);
//public:
// Building()
// {
// this->m_SittingRoom = "客厅";
// this->m_BedRoom = "卧室";
// }
//public:
// string m_SittingRoom; //客厅
//private:
// string m_BedRoom; //卧室
//};
//void goodGay(Building * building)
//{
// cout << "好基友正在访问: " << building->m_SittingRoom << endl;
// cout << "好基友正在访问: " << building->m_BedRoom << endl;
//}
//void test01()
//{
// Building b;
// goodGay(&b);//&=get the address
//}
//int main()
//{
// test01();
// return 0;
//}
//class Building;//clarification first for the use in goodGay
//class goodGay
//{
//public:
// goodGay();
// void visit();
//private:
// Building *building;
//};
//class Building
//{
// //告诉编译器 goodGay类是Building类的好朋友,可以访问到Building类中私有内容
// friend class goodGay;
//public:
// Building();
//public:
// string m_SittingRoom; //客厅
//private:
// string m_BedRoom;//卧室
//};
//Building::Building()
//{
// this->m_SittingRoom = "客厅";
// this->m_BedRoom = "卧室";
//}
//goodGay::goodGay()
//{
// building = new Building;
//}
//void goodGay::visit()
//{
// cout << "好基友正在访问" << building->m_SittingRoom << endl;
// cout << "好基友正在访问" << building->m_BedRoom << endl;
//}
//void test01()
//{
// goodGay gg;
// gg.visit();
//}
//int main()
//{
// test01();
// return 0;
//}
class Building;
class goodGay
{
public:
goodGay();
void visit(); //只让visit函数作为Building的好朋友,可以发访问Building中私有内容
void visit2();
private:
Building *building;
};
class Building
{
//告诉编译器 goodGay类中的visit成员函数 是Building好朋友,可以访问私有内容
friend void goodGay::visit();
public:
Building();
public:
string m_SittingRoom; //客厅
private:
string m_BedRoom;//卧室
};
Building::Building()
{
this->m_SittingRoom = "客厅";
this->m_BedRoom = "卧室";
}
goodGay::goodGay()
{
building = new Building;
}
void goodGay::visit()
{
cout << "好基友正在访问" << building->m_SittingRoom << endl;
cout << "好基友正在访问" << building->m_BedRoom << endl;
}
void goodGay::visit2()
{
cout << "好基友正在访问" << building->m_SittingRoom << endl;
//cout << "好基友正在访问" << building->m_BedRoom << endl;
}
void test01()
{
goodGay gg;
gg.visit();
}
int main()
{
test01();
return 0;
}