定义
类的友元函数定义在类外部,但有权访问类的所有private成员和protected成员。
尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类以及所有成员都是友元。
如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字friend,如下所示。
1 2 3 4 5 6 7 8
| class Box { double width; public: double length; friend void printWidth( Box box ); friend class ClassTwo; void setWidth( double wid ); };
|
示例
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
| #include <iostream> using namespace std;
class Box { double width; public: friend void printWidth(Box box); friend class BigBox; void setWidth(double wid); };
class BigBox { public : void Print(int width, Box &box) { box.setWidth(width); cout << "Width of box : " << box.width << endl; } };
void Box::setWidth(double wid) { width = wid; }
void printWidth(Box box) { cout << "Width of box : " << box.width << endl; }
int main() { Box box; BigBox big; box.setWidth(10.0); printWidth(box); big.Print(20, box); return 0; }
|
版权声明: 此文章版权归金晖のBlog所有,如有转载,请注明来自原作者