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