c++ - 需要前向声明或完整定义

标签 c++ compiler-construction forward-declaration

<分区>

虽然我已经使用前向声明相当长的时间但从未认真考虑过它(我的错误)

如果有人可以给我指点或关于以下查询的任何链接,将会很有帮助:

  1. 我们如何确定我们是否需要前向声明或包含是必需的?
  2. 在这种情况下,编译器实际上是如何工作的?有任何开销吗?
  3. 假设我有两个相互依赖的类 A 和 B。它们都使用彼此的对象,我是否需要在两个类中转发声明。

最佳答案

我会说:

  1. 如果您只需要在 header 中引用或指向类 -> 使用前向声明。
  2. 包含的开销是编译器会看到当前头文件的更多依赖项,因此可能会不必要地重新编译您的 c++ 主体文件。
  3. 如果可能,是的。

关于c++ - 需要前向声明或完整定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17608777/

相关文章:

c++ - 如何在不依赖#define 的情况下转发声明数组大小?

c++ - 为什么我不能在 C++ 的限定命名空间中转发声明类型?

c++ - 复制构造函数产生访问冲突后的 flann::Index 的析构函数

c++ - Visual C++ 优化器是否对可用内存量敏感?

generics - Ada 泛型和汇编代码生成

C# 编译优化 : null coalescing operator - UPDATED - Reflector's bug?

C++ boost::mpl::type 前向声明

c++ - 一种使键盘事件队列既响应又不占用整个 CPU 能力的方法

c++ - 如何通过QGraphicsProxy调整QGraphicScene中添加的QWidget的大小?

c++ - 将额外的字节填充到要通过网络发送的 flatbuffer 的缓冲区指针