友元探秘

来源:互联网 发布:68淘宝小号网站首页 编辑:程序博客网 时间:2024/06/07 12:44

关于友元,我也忘了在哪儿看过一句话了,大意是说:如果设计良好的类,其实是不需要用到友元的。真是存在这样的偏见,让我几年来,看到友元相关的内容就直接跳过。
但是,最近在学习封装自己的容器和迭代器,让我觉得上面那句话所说的未免偏颇。
至此,将友元的内容整理后分享在此,希望大家与我交流。
一、友元函数

void operateNumber(A& a){    a.m_num+=1;}class A:m_num(0){public:    friend void oprateNumber(A& a);//位置可以不固定,只要出现在类内就行private:    int m_num;}int main(){    A a;    operateNumber(a);    system("pause");    return 0;}

二、友元类

//本例是讲述了一个悲伤的故事class Girl;class Boy{public:    void ToKnowGirl(Girl&);}void Boy::ToKnowGirl(Girl& girlName){    cout<<girlName.secrete<<endl;}class Girl:(secrete="I am lesbian"){private:    std::string secrete;    friend Boy;                     //声明Boy类为Girl类的友元类}int main(){    Girl JingJing;    Boy An;    An.ToKnowGirl(JingJing);    system("pause");    return 0;}
0 0