c++6.friend
大约 2 分钟
访问私有成员: 如果有一些与类密切相关的非成员函数需要访问类的私有成员, 但这些函数不适合成为类的成员函数,可以将它们声明为友元函数,以便访问类的私有部分。
class MyClass { private: int privateData; public: MyClass() : privateData(0) {} // 友元函数的声明 friend void displayPrivateData(const MyClass& obj); }; // 友元函数的定义 void displayPrivateData(const MyClass& obj) { std::cout << "Private Data: " << obj.privateData << std::endl; }
提高效率: 有时,为了提高效率,需要使用非成员函数来执行某些操作,而这些操作需要访问类的私有成员。通过将这些函数声明为友元,可以避免将所有操作都包装成成员函数。
重载运算符: 重载某些运算符时,可能需要直接访问类的私有成员。友元函数允许非成员函数重载类的运算符并访问类的私有部分。
class Complex { private: double real; double imag; public: Complex(double r, double i) : real(r), imag(i) {} // 友元函数的声明 friend Complex operator+(const Complex& a, const Complex& b); }; // 友元函数的定义 Complex operator+(const Complex& a, const Complex& b) { return Complex(a.real + b.real, a.imag + b.imag); }