主要观点:最近遇到类声明自身为友元的代码,好奇类何时应将自身声明为友元。介绍了两种情况,一是显式启用模板特化访问,通过模板类声明其他特化为友元来访问私有成员;二是声明外部类为内部类的友元,外部类可访问内部类的非公共成员。
关键信息:
- 直接声明类自身为友元会引发编译器警告。
- 在模板示例中,
template <typename U> friend class Wrapper
用于允许特定模板实例访问其他模板实例的私有成员。 - 对于嵌套类,可声明外部类为内部类的友元,外部类能访问内部类的非公共成员。
重要细节: - 在模板特化访问的示例中,
Wrapper<int>
的accessSecret
方法可通过友元声明访问Wrapper<double>
的私有成员secret
。 - 在外部类为内部类友元的示例中,
Outer
可通过友元声明访问Inner
的私有成员secret
。
总结:讨论了类声明自身为友元的情况,包括模板特化和嵌套类相关的示例,还提到可通过点赞、订阅新闻通讯等方式深入交流。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。