"class example;" 在头文件中是什么意思?

What does "class example;" mean in a Header File?

我有一个问题让我很困惑!

让我们在这里观看这段代码:

#ifndef HEADER_H
#define HEADER_H
#include <iostream>

class example;
class anything_else;

class A {
      public:
           A();
};

...

class example;class anything_else;是什么意思, 而 class A {}; 被宣布?在 CPP 文件中,我看到了 void example::release() { ... } 等定义...

我真的很困惑,有人有 class example; 的例子吗?

What does class example; and class anything_else; mean

它们是 classes exampleanything_else 的声明。它们告诉编译器这些是有效的 class 名称。这种声明被非正式地称为 "forward declaration".

while class A {}; gets declared?

class A 获得 定义

Inside the CPP File i saw definitions like void example::release() { ... } and so on...

这就是函数的定义example::release

example定义的某处,有函数的声明:

class example
{
// ...
    void release(); // declaration
};

如果example只是声明而没有定义,那么example::release的定义会导致编译错误。

如果您想要拥有尚未包含的类型的成员变量,您可以执行该类型的前向声明

class X;

forward 声明了 class X 这样你就可以拥有一个。例如在我们的 class 声明中指向 class 的指针。

class Y
{
...
  X* p;
};

稍后您必须在 .cpp 文件中的某处提供 class 的定义。