类定义中类名称中作用域解析运算符的功能是什么?

时间:2014-05-06 14:45:36

标签: c++

如何在下面的C ++代码中解释类的名称?

以下代码是使用g ++编译器成功编译的项目的一部分。

class ABC::DEF
{
   public :
      int a;
      void func();
};

void ABC::DEF::func() { a = 3; } 

ABC::ABC() : OBJ(new DEF())    
{
}
ABC::~ABC()
{
  delete OBJ;
}
  • 如何解释上述代码中的ABC,DEF和OBJ?
  • 上面定义的构造函数如何工作?

2 个答案:

答案 0 :(得分:2)

ABC :: DEF是一个嵌套类。如果你看一下ABC类的定义,你应该看到类DEF的前向声明。您可以在外部类之外给出这样一个类的完整定义,如您的问题所示。

答案 1 :(得分:2)

ABC的定义很可能看起来像这样:

class ABC
{
public:
    ABC();
    ~ABC();

private:        
    class DEF;
    DEF* OBJ;
};

您正在查看的是ABC::DEF类的定义以及ABC的构造函数。

(这是实施“pimpl习语”的一种非常正常的方式。)