友元的作用就是允许外面的函数或者类访问自身的私有变量。
友元函数
#include <iostream> #include <iostream> class Animal { friend void getHisName(Animal a); //声明友元函数 private: std::string m_name; public: void getMyName() { std::cout << "My name is : " << this->m_name << std::endl; } }; void getHisName(Animal a) { std::cout << "My name is : " << a.m_name << std::endl; //直接访问私有成员 } int main(void) { Animal a; getHisName(a); return 0; }
友元类
#include <iostream> #include <iostream> class Animal { private: std::string m_name; friend class Person; //声明友元类 public: void getMyName() { std::cout << "My name is : " << this->m_name << std::endl; } }; class Person { private: Animal myDog; public: void changeDogName() { myDog.m_name = "wuhu"; //直接更改Animal类的私有成员值 } }; int main(void) { return 0; }