C++ 新手
有一个命名空间,即紧随其后的几个类名
namespace abc {
class Cursor;
class BufferAllocator;
....
....
}
上面Cursor和BufferAllocator的类声明在这里做什么?
最佳答案
它只是表示“这些类存在于”命名空间 abc
中,而没有提供有关它们实现的任何信息。
这叫做前向声明。
它可以用于:
- 避免标题包含中的循环(当类 A 有类 B 的成员,类 B 有类 A 的成员时)
- 减少类之间的依赖性(因为你可以有一个指向前向声明的类的成员指针,但不能直接有一个成员,因为编译器不知道类的大小,而没有它的实现细节,但是知道指针的大小)。这在 Pimpl idiom 中特别使用.
(这可能还有其他用途,但这些是我想到的最明显的)。
关于c++ - C++ 命名空间后的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918780/