Cpp_友元

特点

  1. 不具有自反性
  2. 不具有传递性
  3. 不具有继承性

三种形式

  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
class Object
{
private:
int value;
public:
Object(int x):value(x)
{

}
};
class Base
{
private:
int sum;
public:
Base(int x = 0):sum(x)
{

}
void fun(Object& obj)
{
obj.value = obj.value + sum;//error
}
};
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
class Object;//在Base前要声明
class Base
{
private:
int sum;
public:
Base(int x = 0):sum(x)
{

}
void fun(Object& obj);
};
class Object
{
private:
int value;
public:
Object(int x):value(x)
{

}
friend
};
void Base::fun(Object& obj)
{
obj.value = obj.value + sum;//error
}
int main()
{
Base base(10);
Object obja(20);
base.fun(obja);
return 0;
}