"类示例是什么;"在头文件中意味着什么?

时间:2017-02-03 20:03:44

标签: c++ class oop syntax header-files

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

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

#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;的例子?

2 个答案:

答案 0 :(得分:7)

  

class example;class anything_else;的含义是什么

它们是类exampleanything_else的声明。它们告诉编译器这些是有效的类名。这种声明被非正式地称为“前瞻性声明”。

  

class A {};被声明了吗?

class A获取定义的

  

在CPP文件中,我看到了void example::release() { ... }等定义,等等......

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

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

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

如果example仅声明且未定义,则example::release的定义会导致编译错误。

答案 1 :(得分:2)

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

class X;

forward声明类X,所以你可以拥有一个。例如在我们的类声明中指向该类的指针。

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

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