关于C++中友元的理解和应用
友元的简介:
书本上的定义简单的概括为:如果类A中的函数要访问类B中的成员,那么类A中该函数是类B的友元函数。
其实当我看完这段定义的时候是有点绕的,到底怎么算是友元,友元怎么用,进过一番分析我把自己的理解写下来,如有错误,记得提醒哦,嘻嘻
友元的优缺点:
还是先讲一下友元的优缺点吧。优点是提高了效率,简化操作,表达简单清晰(但是有时会弄混 ,接下来具体说); 缺点:破坏了封装的机制,给C++类的包装打了一个天窗;
具体讲解:
具体看代码:
class Boy{
public:
void display(Girl &);
}
void Boy::display(Girl &girl) {
cout<<"girl's name is:"<<girl.name<<",age:"<<girl.age<<endl;
//借助友元,在Boy的成员函数display中,借助girl的对象,直接访问girl的私有变量
}
class Girl{
private:
string name;
int age;
friend Boy;//声明类Boy是类Girl的友元
}
上面friend Boy;
一句以及void display(Girl &);
一句到底该怎么写总结如下:
首先明确Girl是Boy朋友,但是Boy不一定承认是Girl的朋友(即boy可以访问girl的私有成员,但girl不一定能访问boy的私有成员);
其次在具体定义位置时记住一句话:“我是谁的朋友”,比如上面Girl是Boy的朋友,则在Girl中定义友元类Boy,而在Boy中定义访问到Girl私有成员的函数。
OK. 解决。上面仅仅讲的是关于友元类的使用方式,同样友元函数可以类推。
本文代码部分借鉴:这里写链接内容
完