C++ 友元函数
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。
- 尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数,或者说不属于任何一个类。
- 友元可以是一个函数,该函数被称为友元函数;
- 友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
举例:
#include <iostream> using namespace std; class DemoClass{ private: int value; public: void setValue(int value){ this->value = value; } friend void printValue(const DemoClass &demoClass); }; void printValue(const DemoClass &demoClass) { cout << "friend's function: " << demoClass.value << endl; } int main(void) { DemoClass demoClass; demoClass.setValue(10); printValue(demoClass); return 0; }
友元类frend class className需要定义在“被友元”的类中,当作成员
#include <iostream> using namespace std; class DemoClass{ private: int value; public: friend class FriendClass; }; class FriendClass{ public: void setValue(DemoClass &demoClass,int value) { demoClass.value = value; cout << "setValue success! " << endl; } void printValue(const DemoClass &demoClass) { cout<<"friend's Class's function: " << demoClass.value << endl; } }; int main(void) { DemoClass demoClass; FriendClass friendClass; friendClass.setValue(demoClass,10); friendClass.printValue(demoClass); return 0; }