c++ - C++ 命名空间后的类名

标签 c++

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/

相关文章:

c++ - 链接器读取库但在其中找不到符号?未解析的外部符号,但仅适用于 Win32 而不是 x64

c++ - 返回 std::vector - 正确的方法

c++ - 从创建的类中获取用户输入

c++ - NULL 指针与 static_cast 的兼容性

由双指针创建的 C++ 二维数组

c++ - 原型(prototype)与 decltype 和 auto 不匹配

c++ - 生成模板包

c++ - 在 C++ 中的多个程序之间本地共享数据(如套接字)

c++ - 如何在 std::map 中找到所有具有最大值 C++ 的键?

c++ - 错误 C3861 : 'rollDice' : identifier not found