首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中命名空间后的类名

问C++中命名空间后的类名
EN

Stack Overflow用户
提问于 2013-06-04 21:11:38
回答 5查看 169关注 0票数 3

C++新手入门

有一个名称空间,即紧跟在它后面的几个类名

代码语言:javascript
复制
namespace abc {
 class Cursor;
 class BufferAllocator;
....
....
}

上面的Cursor和BufferAllocator类声明在这里做什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-04 21:14:04

Cursor和BufferAllocator只是在它们的名称空间中被向前声明(因此它们可以在指针/引用上下文中使用)。

票数 3
EN

Stack Overflow用户

发布于 2013-06-04 21:14:36

它只是在名称空间abc中表示“这些类存在”,而没有提供有关其实现的任何信息。

这就是所谓的转发声明。

它在以下方面很有用:

  • 避免头包含中的循环(当类A有一个类B的成员,而类B有一个类A的成员时)
  • 减少了类之间的依赖(因为你可以有一个指向正向声明的类的成员指针,但不能直接有一个成员,因为编译器不知道没有实现细节的类的大小,但知道指针的大小)。这在Pimpl idiom.

中使用得尤为明显

(这可能还有其他用途,但这是我想到的最明显的用法)。

票数 9
EN

Stack Overflow用户

发布于 2013-06-04 21:14:27

这是一个转发声明。它告诉下面的代码“有一个名为Cursor的类。你不需要知道它里面有什么,因为在定义它之前,我们只是将它用作代码中的指针或引用”。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16918780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档