问题描述:
一图胜千言:
//只在Node类中声明Linklist为友元可以在Linklist类内访问Node私有属性
而要注意的是
如果只在Linklist类内声明Node类为友元那么在Linklist类内就无法访问Node类的私有属性
逻辑上可以验证,其他的情况可以自行验证。
也很好理解,上面的需求可以对比以下场景:
一个名字叫Linklist的人想要访问Node的私人空间(比如手机),那Node又不认识Linklist啊,凭什么给你看我的手机(private属性)?只有Node说我认识这个Linklist的人(在Node类中声明friend class Linklist;)说Linklist你要访问我的手机(private属性)是吧,给你吧,于是Linklist就开心的访问和玩弄修改Node的private属性了,
那下面Node想要访问Linklist的手机Linklist会答应吗?此时Linklist高高在上,说你认得我,不代表我认得你(在Node类中声明friend class Linklist;与此同时没有在Linklist类中声明friend class Node;)Linklist此时是个渣男,不给你看他的手机(private属性),因为你把它当朋友,它不把你当朋友,所以他像怎么摆弄你就怎么摆弄你,但是你要摆弄他?对不起,他不把你当朋友,不给你机会。
这就是对友元可以访问谁的属性的理解。