类名后面的分号有什么作用?

What does a semicolon after a class name do?

本文关键字:什么 作用      更新时间:2023-10-16

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

namespace sf
{
class RenderWindow;
}
class StateStack;
class Player;
class State
{
    // Code for the class
};

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

这些都是前向声明。它们让下面的代码知道有名称为RenderWindowStateStackPlayer的类。当编译器看到这些名称被使用时,它会感到满意。稍后,链接器将找到这些类的定义。

这是一个前向声明,本质上它告诉编译器完整的定义将在其他地方遵循。

这个的主要用例是在你不需要完整定义的情况下,例如,如果你有一个类型为T的指针,你不需要T的完整定义,直到实例化,因此它不需要有T*的声明。