向自己宣告一段友谊

主要观点:最近遇到类声明自身为友元的代码,好奇类何时应将自身声明为友元。介绍了两种情况,一是显式启用模板特化访问,通过模板类声明其他特化为友元来访问私有成员;二是声明外部类为内部类的友元,外部类可访问内部类的非公共成员。
关键信息:

  • 直接声明类自身为友元会引发编译器警告。
  • 在模板示例中,template <typename U> friend class Wrapper用于允许特定模板实例访问其他模板实例的私有成员。
  • 对于嵌套类,可声明外部类为内部类的友元,外部类能访问内部类的非公共成员。
    重要细节:
  • 在模板特化访问的示例中,Wrapper<int>accessSecret方法可通过友元声明访问Wrapper<double>的私有成员secret
  • 在外部类为内部类友元的示例中,Outer可通过友元声明访问Inner的私有成员secret
    总结:讨论了类声明自身为友元的情况,包括模板特化和嵌套类相关的示例,还提到可通过点赞、订阅新闻通讯等方式深入交流。
阅读 13
0 条评论