一个类名后的分号是做什么的?

时间:2014-07-19 00:30:58

标签: c++

在我正在阅读的书中,我注意到了这样的代码行:

namespace sf
{
class RenderWindow;
}

class StateStack;
class Player;

class State
{
    // Code for the class
};

只有class,classname和分号的行是什么意思?

2 个答案:

答案 0 :(得分:10)

这些是前瞻性声明。他们让以下代码知道有些名称为RenderWindowStateStackPlayer的类。当它看到使用这些名称时,这满足了编译器。稍后链接器将找到类的定义。

答案 1 :(得分:4)

这是一个前向声明,基本上它向编译器发出信号,表明完整定义将在其他地方发布。

此主要用例是您不需要完整定义的情况,例如,如果您的指针类型为T,则不需要T的完整定义直到实例化,因此不需要声明T*