友元类、友元函数

#include <iostream>

#include <vector>

#include <assert.h>


using namespace std;


class A;

class C

{

    public:

        int getA(A a);

};


class A

{

    public:

        int a;

        A() 

        :a(10),b(11) {}

    private:

        int b;

        int getA() {return a;}

    friend class B;

    friend int C::getA(A a);

};


class B

{

    public:

        int getA(A a) {return a.getA();}

        int getB(A a) {return a.b;}

};


int C::getA(A a) {return a.b;}



int main()

{

    A a;

    B b;

    C c;

    cout << b.getA(a) << endl;

    cout << b.getB(a) << endl;

    cout << c.getA(a) << endl;

    return 0;

}


如上为使用友元类和友元函数的例子。

使用场景:

    1、类之间数据共享

    2、运算符重载

优点:能够提高效率,表达简单、清晰;

 缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已的情况下才使用友元函数;

注意点:友元函数不能继承;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章