如何在下面的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;
}
答案 0 :(得分:2)
ABC :: DEF是一个嵌套类。如果你看一下ABC类的定义,你应该看到类DEF的前向声明。您可以在外部类之外给出这样一个类的完整定义,如您的问题所示。
答案 1 :(得分:2)
ABC
的定义很可能看起来像这样:
class ABC
{
public:
ABC();
~ABC();
private:
class DEF;
DEF* OBJ;
};
您正在查看的是ABC::DEF
类的定义以及ABC
的构造函数。
(这是实施“pimpl习语”的一种非常正常的方式。)