C++ 友元

友元分友元函数、友元类。

友元函数:一个类的友元函数可以访问该类的私有成员

我们可以将一个类的成员函数(包括构造、析构函数)作为另一个类的友元函数。如下

class CCar; // 提前声明CCar 类,以便后面的CDriver类使用
class CDriver {
public:
    void ModifyCar(CCar *pCar); // 改装汽车
};

class CCar {
private:
    int price;
    
    friend int MostExpensiveCar(CCar cars[], int total); // 声明为友元
    friend void CDriver::ModifyCar(CCar *pCar); // 声明友元
};

void CDriver::ModifyCar(CCar *pCar)
{
    pCar->price += 1000;
}

int MostExpensiveCar(CCar cars[], int total)
{
    int tmpMax = -1;

    for (int i = 0; i < total; ++i)
    {
        if (cars[i].price > tmpMax)
        {
            tmpMax = cars[i].price;
        }
    }

    return tmpMax;
}

int main()
{
    return 0;
}

友元类

A是B的友元类,则A的成员函数可以访问B的私有成员。

注意:友元类之间的关系不能传递,不能继承。

如下代码

class CCar {
private:
    int price;

    friend class CDriver; // 声明CDriver 为友元类
};

class CDriver {
public:
    CCar myCar;

    void ModifyCar() { // 改装汽车
        myCar.price += 1000;
    }
};

int main() {return 0;}
原文地址:https://www.cnblogs.com/aqing1987/p/4276060.html