16.友元函数的作用及使用场景-灵析社区

菜鸟码转

  • 友元函数的作用:友元(friend)提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个普通的函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。

使用场景:

1.普通函数定义为类的友元函数,使得普通函数能够访问该类的私有成员和保护成员。

C++

#include <iostream>

using namespace std;

class A
{
    friend ostream &operator<<(ostream &_cout, const A &tmp); // 声明为类的友元函数

public:
    A(int tmp) : var(tmp)
    {
    }

private:
    int var;
};

ostream &operator<<(ostream &_cout, const A &tmp)
{
    _cout << tmp.var;
    return _cout;
}

int main()
{
    A ex(4);
    cout << ex << endl; // 4
    return 0;
}

2.友元类:

由于类的 private 和 protected 成员变量只能由类的成员函数访问或者派生类访问,友元类则提供提供一种通用的方法,使得不同类之间可以访问其 private 和 protected 成员变量,用于不同类之间共享数据。

C++

#include <iostream>

using namespace std;

class A
{
    friend class B;

public:
    A() : var(10){}
    A(int tmp) : var(tmp) {}
    void fun()
    {
        cout << "fun():" << var << endl;
    }

private:
    int var;
};

class B
{
public:
    B() {}
    void fun()
    {
        cout << "fun():" << ex.var << endl; // 访问类 A 中的私有成员
    }

private:
    A ex;
};

int main()
{
    B ex;
    ex.fun(); // fun():10
    return 0;
}


阅读量:2014

点赞量:0

收藏量:0