C++拾遗(十三)友元和嵌套类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++拾遗(十三)友元和嵌套类相关的知识,希望对你有一定的参考价值。

友元类

使用友元的场合:

1、两个类既不是is-a关系也不是has-a关系,但是两个类之间又需要有联系,且一个类能访问另一个类的私有成员和保护成员。

2、一个类需要用到另外多个类的私有成员。

 C++primer一书中给出的例子:电视和遥控器。

 1 class Tv                            //原始类 电视
 2 {
 3   public:
 4           friend class Remote;//友元类声明
 5   //..  
 6 };
 7 
 8 class Remote                    //友元类 遥控器
 9 {
10   //  
11 };

友元声明可以位于原始类的任何位置(public,private,protect中都行)。
同时在使用友元时,常用到前向声明。

 

嵌套类

在另一个类中声明的类被称为嵌套类。

嵌套类的构造函数可以在函数声明中定义,也可以在实现文件中用两个类作用域解析符来完成。

嵌套类、枚举和结构的作用域:

声明位置 包含它的类是否可以使用它 从包含它的类派生出来的类是否可以使用它 外部世界是否可以使用它
私有
保护
公有

是(通过类限定符来使用)

 

 

 

 

另外,对嵌套类访问控制规则和常规类一样。这意味着即使是包含嵌套类的类也不能使用嵌套类的私有保护成员。

以上是关于C++拾遗(十三)友元和嵌套类的主要内容,如果未能解决你的问题,请参考以下文章

c++基础篇——类与对象入门(下)

关于声明定义前向声明include循环依赖普通友元函数友元类友元成员函数的总结

C++友元详解

C++之:友元类

C++:使用友元类限制对象实例化

C++入门友元函数详解(定义实现优缺点)