1 友元函数
一个类的友元函数可以访问该类的私有成员
基本格式:
class A{
public void funcA(){};
};
class B{
private:
int b;
friend void A::funcA();
};
具体示例:
#include <iostream>
using namespace std;
class Car;
class Driver{
public:
void ModifyCar(Car * pcar); //如果参数是car的一个对象的话就要把car类写全
};
class Car{
private:
int price;
friend int MostExpCar(Car cars[], int n);
friend void Driver::ModifyCar(Car * pcar);
};
//因为modifycar是car类的友元函数,可以访问私有变量
void Driver::ModifyCar(Car * pcar){
pcar->price += 1000;
}
int MostExpCar(Car cars[], int n){
int tmpMax = -1;
for(int i = 0; i < n; i++){
if(cars[i].price > tmpMax){
tmpMax = cars[i].price;
}
}
return tmpMax;
}
int main(){
return 0;
}
2 友元类
A是B的友元类,A的成员函数可访问B的私有成员
class A{
private:
int price;
friend class B;
};
class B{
public:
A a;
void modifyA(){
a.price += 1000;
}
};
友元类间的关系不可传递,不可继承
a是b的友元,b是c的友元,a不是b的友元