这一部分介绍C++友元函数、友元类和this指针。
友元函数,可以在类的成员函数外部直接访问对象的私有成员。
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
class CCar;//提前声明CCar类,以便后面的CDriver类使用
class CDriver
{
public:
void ModifyCar(CCar* pCar);//改装汽车
};
class CCar
{
private:
int price = rand() % 1000;
//声明友元
friend int MostExpensiveCar(CCar cars[], int total);
//声明友元
friend void CDriver::ModifyCar(CCar* pCar);
};
void CDriver::ModifyCar(CCar* pCar)
{
for (int i = 0; i < 5; i++)
{
pCar->price += 1000;//汽车改装后价值增加
pCar++;
}
}
int MostExpensiveCar(CCar cars[], int total)
{
//求最贵汽车的价格
int tmpMax = -1;
for (int i = 0; i < total; i++)
{
cout << cars[i].price << " ";
if (cars[i].price > tmpMax) {
tmpMax = cars[i].price;
}
}
cout << endl;
return tmpMax;
}
int main()
{
srand(time(NULL));
CCar cars[5];
int tmpMax;
tmpMax = MostExpensiveCar(cars, 5);
cout << tmpMax << endl;
CDriver c;
c.ModifyCar(cars);
tmpMax = MostExpensiveCar(cars, 5);
cout << tmpMax << endl;
return 0;
}