c++ - 前向申报的目的是什么?

标签 c++ declaration

这是什么描述或含义: 例如:

class test;

class test
{
  .....
};

最佳答案

C++(如 C)被设计为可由单遍编译器实现。在编译器需要在实际定义类之前知道符号引用类的情况下,前向引用是必要的。典型的例子是当两个类需要包含指向彼此的指针时。即

class B;

class A {
  B* b;
};

class B {
  A* a;
};

如果没有对 B 的前向引用,编译器将无法成功解析 A 的定义,并且您无法通过将 B 的定义放在 A 之前来解决问题。

在像 C# 这样需要二次编译器的语言中,您不需要前向引用

class A {
  B b;
}

class B {
  A a;
}

因为编译器的第一遍只是选择了所有的符号定义。当编译器进行第二遍时,它可以说“我知道 B 是一个类,因为我在第一遍看到了定义”。

关于c++ - 前向申报的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3110096/

相关文章:

c++ - SDL 无法在 native 环境中编译

c++ - OpenGL 游戏引擎渲染器

c - 带值变量的定义和声明

C++ Linux : Declaring an array in a class causes segmentation fault

C++ 将 char 添加到 char[1024]

c++ - 使用发射与调用信号,就好像它是 Qt 中的常规函数​​一样

function - Haskell 函数定义不带 ->

c - 输入末尾的预期声明或语句?

c - 数组声明的问题

javascript - 你能在 javascript 中使用 type 与使用 var 来声明变量吗?什么时候它是更好的选择?