友元函数

为了让一个与类无关的函数能访问类的私有数据,可以让这个方法成为类的友元函数。

如何创建友元函数

在类中,只需在这个函数原型前面加上friend关键字,而不需要在定义中加上friend。

使用友元函数

由于友元函数不是类的成员函数,因此

  1. 不能使用点号调用,而是直接使用函数即可。
  2. 定义时也不需要加上类名和作用域限制符。
class Person
{
    private:
        std::string mName;
        int mAge;

    public:
        Person();
        Person(const std::string & name, int age);
        ~Person();
        // 原型中加上friend定义为友元函数,这样ostream类可以访问Person内部数据
        friend std::ostream & operator<<(std::ostream & os, const Person & p);
};

// 友元函数的定义不需要friend关键字
std::ostream & operator<<(std::ostream & os, const Person & p)
{
    os << "Name: " << p.mName << ", Age: " << p.mAge;
    return os;
}

int main()
{
    Person p("david", 19);
    std::cout << p << std::endl;
    return 0;
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。