什么是"阶级的例子"; 在头文件中意味着什么?

Laz*_*ano 0 c++ oop syntax class header-files

我有一个关于真正让我困惑的事情的问题!

我们在这里看一下这段代码:

#ifndef HEADER_H
#define HEADER_H
#include <iostream>

class example;
class anything_else;

class A {
      public:
           A();
};

...
Run Code Online (Sandbox Code Playgroud)

是什么class example;class anything_else;意味着,虽然class A {};被宣布?在CPP文件中,我看到了诸如此类的定义void example::release() { ... }......

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

问候!

Chr*_*ckl 7

是什么class example;class anything_else;意味着

它们是类example和的声明anything_else.它们告诉编译器这些是有效的类名.这种声明被非正式地称为"前瞻性声明".

什么时候class A {};被宣布?

class A得到定义.

在CPP文件中,我看到了诸如此类的定义void example::release() { ... }......

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

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

class example
{
// ...
    void release(); // declaration
};
Run Code Online (Sandbox Code Playgroud)

如果example仅声明且未定义,则example::release在编译错误中定义结果.