码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 友元

时间:2015-02-05 23:11:58      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

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;}

 

C++ 友元

标签:

原文地址:http://www.cnblogs.com/aqing1987/p/4276060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!