友元意义:在类的外部定义的函数或类可以访问其类内部的私有、公有变量。
实际操作(用《C++ Primer plus》范例):
1.声明定义一个类CTV(这里包含了友元函数和类,图个方便)
//一个电视机类 class CTV { public: CTV(); friend void SetOn( CTV & pC);//友元函数 friend void SetOff(CTV & pC);//友元函数 friend class CRemote;//友元类 void SetbOnOff(); private: enum { on = true, off = false }; bool bOnOff; }; CTV::CTV() :bOnOff(false) { }
2友元函数
友元函数使用就是在类中声明,然后外边定义。但其实这个函数并不属于这个类。
//使用 int main() { CTV aTV; SetOn(aTV); SetOff(aTV); CRemote aRemote(aTV); aRemote.SetOn(); }
3友元类
可以看到这里在构造这个类时引入了CTV这个类,我认为这是在实际应用中常用方法。
//友元类在类中声明后可以访问类的私有变量 //同时认为在实际用途中常用如下构造函数方案去引入类这样之前的类。 class CRemote { public: CRemote(CTV & pC) :myTV(pC) {}; void SetOn() { myTV.bOnOff = myTV.on; } private: CTV & myTV; }; //使用 int main() { CTV aTV; CRemote aRemote(aTV); aRemote.SetOn(); }
才疏学浅,请多指教。