04 - 友元类与友元函数

本文介绍了C++中的友元类和友元函数。

友元

友元(friend)就是可以让另一个类或函数访问本类私有成员和方法的简单写法。

class Test
{
    // 让Test2能够访问Test的私有成员
    friend class Test2;
    // 让outPut2函数能够访问Test的私有成员
    friend void outPut2(const Test& test);
    
private:
    std::string name;
    unsigned old;
};

class Test2
{
public:
    void outPut(const Test& test)
    {
        std::cout << test.name << " " << test.old << std::endl;
    }
};

void outPut2(const Test& test)
{
    std::cout << test.name << " " << test.old << std::endl;
}

注意:

  1. 友元可以违反封装的原则,一般不推荐使用
  2. 某些运算符的重载必须用到友元的功能,这才是友元的真正用途

参考资料

  • 飘零的落花 - 现代C++详解
  • C++20高级编程