C++——友元friend,实践

2020-11-29  本文已影响0人  StevenHD

一、友元的概念

友元friend可以让类B的对象高效地访问类A的私有成员,如果不用友元friend,那么就需要通过类A的公有成员函数来访问类A的私有数据成员(这种做法太麻烦了)。

二、前向性声明

三、不同类之间的声明

全局函数和类B的成员函数——


全局函数可以不加::,但是另一个类要加上B::

四、实践友元

声明为类A(比如Point)的友元,就可以通过A(比如Point)的对象,访问A(比如Point)的private数据成员

五、友元的利弊

友元的好处在于——可以不用通过函数接口来使用private成员,而是可以直接通过对象来访问。(当然就算是自己类的对象也不能直接访问自己类的private数据成员

友元一般都是函数,友元类也是对函数有便利,让友元函数直接使用private数据成员,因为本类自己的公有函数是可以随便用Private数据成员的。
友元的坏处在于——破坏了封装性

六、运算符重载与友元

将一个全局函数变为友元函数

#include <iostream>

using namespace std;

class Complex
{
public:
    Complex (int r = 0, int i = 0) : real(r), image(i) {}
    
    friend Complex operator+(Complex& a, Complex& b);

    void dis()
    {
        cout << "(" << real << "," << image << ")" << endl;
    }

private:
    
    int real;
    int image;
};

Complex operator+ (Complex& a, Complex& b)
{
    Complex t;

    t.real = a.real + b.real;
    t.image = a.image + b.image;

    return t;
}

int main()
{
    Complex c1(1, 2), c2(3, 4);
    Complex c3 = c1 + c2;
    
    c3.dis();

    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读