5.3友元函数

友元函数可以访问类的私有变量,还可以访问私有函数

1 类本身的友元函数

虽然在类中说明友元函数,但它并不是类的成员函数,所以可以在类外面像普通函数那样定义这个函数。

在类中说明友元函数带friend,在类外面定义这个函数不带friend

2 将成员函数用做友元

3 将一个类说明为另一个类的友元

若F类是A类的友元类,则F类的所有成员函数都是A类的友元函数。

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

//由于类fushu的构造函数的参数涉及类mianji,因此应该先定义类mianji,后定义类fushu

 1 #include <iostream>
 2 
 3 class mianji
 4 {
 5 public:
 6     friend class fushu;//将一个类说明为另一个类的友元
 7     mianji()//构造函数
 8     {
 9         this->cx = 0;
10         this->cy = 0;
11     }
12     void setxy(int a, int b)
13     {
14         this->cx = a;
15         this->cy = b;
16     }
17 private:
18     int cx;
19     int cy;
20 };
21 
22 //由于类fushu的构造函数的参数涉及类mianji,因此应该先定义类mianji,后定义类fushu
23 
24 class fushu
25 {
26 public:
27     fushu(mianji mianji1)//构造函数
28     {
29         this->x = mianji1.cx;
30         this->y = mianji1.cy;
31     }
32     void print()
33     {
34         std::cout << x << "+" << y << "i" << std::endl;
35     }
36 private:
37     int x;
38     int y;
39 };
40 
41 void main()
42 {
43     mianji mianji1;
44 
45     fushu fushu1(mianji1);//定义一个类fushu的对象,参数是一个类mianji的对象
46     fushu1.print();
47 
48     fushu fushu2 = static_cast<fushu>(mianji1);//通过构造函数进行转换
49     
50     system("pause");
51 }
原文地址:https://www.cnblogs.com/denggelin/p/5661879.html