❥关于C++之嵌套类

Posted itzyjr

tags:

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

可以在一个类的范围内声明另一个类。 这样的类称为 "嵌套类"。嵌套类被视为在封闭类的范围内,并且可在该范围内使用。 若要从嵌套类的即时封闭范围之外的某个范围引用该类,则必须使用完全限定名。

class BufferedIO 
public:
   enum IOError  None, Access, General ;
   
   class BufferedInput // Declare nested class BufferedInput.
   private:
       IOError _inputerror;
   public:
      int read();
      int good();
   ;
   
   class BufferedOutput // Declare nested class BufferedOutput.
      // Member list
   ;
;

要用完全限定名定义嵌套类成员方法:

// Define member functions read and good in file scope.
int BufferedIO::BufferedInput::read() 
   return _inputerror == Access;

int BufferedIO::BufferedInput::good() 
    return _inputerror == None;

嵌套类仅在类范围内声明类型。 它们不会导致创建嵌套类的包含对象。 前面的示例声明两个嵌套类,但未声明这些类类型的任何对象。

访问权限:

将一个类嵌入另一个类中不会为嵌入类的成员函数提供特殊访问权限。 同样,封闭类的成员函数不具有对嵌套类的成员的特殊访问权限。

嵌套类只能从封闭类中直接使用名称、类型名称,静态成员的名称和枚举数。 若要使用其他类成员的名称,您必须使用指针、引用或对象名。 

下图的代码非常直观地解释了原始类与嵌套类的互相访问权限情况:

以上是关于❥关于C++之嵌套类的主要内容,如果未能解决你的问题,请参考以下文章

C++ 错误:未在此范围内声明类/对象

整个类范围内的 C++ 命名空间别名

C++中,一个类模板的内部又嵌套了一个类模板,语法应该是怎么样的

OpenGL 实践之贝塞尔曲线绘制

《C++ Primer》之面向对象编程

不同范围内的 C++ 对象引用