1

我正在使用 g++ 编译器在 Linux 上使用英特尔代码覆盖工具。对于特定类,覆盖工具显示的功能比源代码中实际存在的功能多 2/3。

这些额外的功能是什么?它们是编译器生成的函数吗?

我将头文件排除在代码覆盖范围之外。我的课程很简单,带有空 ctor 和 dtor。

我猜以下函数是由编译器生成的。

  1. 复制构造函数
  2. 赋值运算符
  3. 宏(在我的情况下不是)
  4. 信号槽连接机制(例如在 Qt moc 编译器中生成这些)
4

1 回答 1

1

这篇文(关于使用 GDB 进行调试)解释了为什么您会看到“额外的”构造函数。

gcc 为构造函数生成两个不同的函数体。一个是构造整个对象的常规对象,包括所有基础。另一个构造除了虚拟基类之外的所有东西。碰巧的是,即使对于根本没有虚基的类,gcc 也会发出这两个构造函数。

于 2009-05-13T15:39:42.217 回答