对于类的私有成员只能在类的成员函数内部访问。这样虽然带来了数据隐藏上的好处,但会增加
程序书写上的麻烦。为了折中考虑,C++中提供了友元的概念。
友元:友元函数、友元类
在定义一个类时可以把一些函数(包括全局函数和其他类的成员函数)声明为"友元" ,在友元函数
内部就可以访问类对象的私有成员。
将其它类的成员函数声明为友元的写法:
friend 返回值类型 其他类的类名::成员函数名(参数表);
但是不能将其它类的私有成员函数声明为友元。
class CDriver{ public: void ModifyCar(CCar *pCar); }; class CCar{ private: int price; // 声明友元 friend int MostExpensiveCar(CCar *car, int total); friend void CDriver::ModifyCar(CCar *pCar); };
一个类可以将另一个类声明为自己的友元,这样这个类的私有成员就可以被另一个类访问
class CCar{ private: int price; // 声明为友元类 friend class CDriver; }; class CDriver{ public: CCar myCar; void ModifyCar(){ myCar.price += 2000; } };