C++ 新手
有一个命名空间,即紧随其后的是几个类名
namespace abc {
class Cursor;
class BufferAllocator;
....
....
}
上面的 Cursor 和 BufferAllocator 的类声明在这里做了什么?
C++ 新手
有一个命名空间,即紧随其后的是几个类名
namespace abc {
class Cursor;
class BufferAllocator;
....
....
}
上面的 Cursor 和 BufferAllocator 的类声明在这里做了什么?
它只是表示命名空间中的“这些类存在” abc
,而没有提供有关其实现的任何信息。
这称为前向声明。
它可用于:
(这可能还有其他用途,但这些是最明显的想到的)。
这是一个前向声明。它告诉下面的代码“有一个名为 Cursor 的类。你不需要知道它里面有什么[因为我们只是将它用作代码中的指针或引用,直到它被定义]”。
Cursor
并且BufferAllocator
只是在它们的命名空间中被前向声明(因此它们可以在指针/引用上下文中使用)。
这是一个前向声明。当您只打算使用指向该类型的指针或引用时,它可用于通知编译器类型的存在。指针或引用的大小与它所引用的类型无关,因此在这种情况下编译器不需要查看类型的完整定义;它只需要知道类型首先存在。
这在通常声明类型的标头很大的情况下(想想包含大量声明或模板实例化的标头)会很有用,在这种情况下它可以减少编译时间(有时显着)。您可以只前向声明类型并跳过包含标题,因此您的编译器不需要处理它。
命名空间有助于避免在每个函数前面键入特定的类名。
由于您是新手,因此您大多会看到 using namespace std;
所以现在你可以直接使用 cout 如果你不使用这个语句那么你必须为每次使用 cout 编写 std::cout
希望这可以帮助