친구 기능, 친구 클래스

친구 기능

글로벌 함수 또는 다른 클래스의 멤버 함수는 friend 함수로 선언 할 수있다, 내부 기능은 친구의 전용 멤버 클래스를 사용할 수 있습니다

#include<iostream>
using namespace std;
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;
}

友元类

다른 클래스 B가 자신의 친구를 선언 할 수있는 클래스의 private 멤버는 클래스 B의 모든 멤버 함수는 클래스 A의 객체에 액세스 할 수있는 것

운명의 관계는 상속 만 클래스를 부여 할 수 없습니다

class CCar
{
private:
    int price;
    friend class CDriver;  //声明 CDriver 为友元类
};
class CDriver
{
public:
    CCar myCar;
    void ModifyCar()  //改装汽车
    {
        myCar.price += 1000;  //因CDriver是CCar的友元类,故此处可以访问其私有成员
    }
};
int main()
{
    return 0;
}

추천

출처www.cnblogs.com/xiongyungang/p/11361317.html