GNU GCC 中的多个析构函数 (g )
问题:
在调查代码覆盖率时在 GNU GCC (g ) 中,在 BaseClass 和 DerivedClass 中都观察到了多个析构函数。为什么会生成这些多个析构函数,它们有何不同?
答案:
在 Itanium C ABI 中,定义了三种类型的析构函数:
给定代码中的多个析构函数:
给定代码生成多个析构函数,因为它包含虚拟基类。在本例中:
选择性使用析构函数:
Itanium C ABI 指定执行哪个析构函数:
覆盖率影响:
要实现 100% 的函数覆盖率,了解这些析构函数并在单元测试中相应地调用它们非常重要。例如,b_ptr 应作为 BaseClass* b_ptr 删除以执行 D0 并覆盖两个析构函数。
以上是GNU GCC (g ) 中的多个析构函数有何不同以及它们为何生成?的详细内容。更多信息请关注PHP中文网其他相关文章!