C++基础知识之"友元"

fengjingtu

友元函数

一个函数是一个类的友元函数,表示这个函数可以访问类的私有属性
友元函数在类中声明的位置没有关系,但必须与原函数完全一致,只多一个friend

友元类

若B类是A类的友员类,则B类的所有成员函数都是A类的友员函数

友员类通常设计为一种对数据操作或类之间传递消息的辅助类

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

#include<iostream>
using namespace std;

//一个函数是一个类的友元函数,表示这个函数可以访问类的私有属性
//友元函数在类中声明的位置没有关系,但必须与原函数完全一致,只多一个friend

class FA
{
public:
friend class FB;
friend void friendA(FA * a);
protected:
private:
int a;
void showA()
{
cout << "a=" << a << endl;
}
};

void friendA(FA * A)
{
A->a = 5;
A->showA();
}

//一个类B是类A的友元类,说明B中的所有函数都是A的友元函数。
//友员类通常设计为一种对数据操作或类之间传递消息的辅助类
class FB
{
public:
void set(int i)
{
Aobj.a=i;
}
void showAobj()
{
cout << "Aobi.a=" << Aobj.a << endl;
}
protected:
private:
FA Aobj;
};
int main_friend()
{
FA a;
FB b;

friendA(&a);
cout<<"hello world"<<endl;

b.set(15);
b.showAobj();
system("pause");
return 0;
}