消除未使用的虚拟功能
Elimination of unused virtual functions
是否可以从下面的简单代码中使MS链接器删除D::Unused
函数?
class B {
virtual const char* Unused() = 0;
};
class D : public B {
const char* Unused() override;
};
const char* D::Unused() { return "this string is unused"; }
int main() {
D* d = new D;
delete d;
return 0;
}
我正在尝试使用 vs2017 +/OPT:REF /OPT:ICF /LTCG
来实现这一点,但生成的二进制文件仍然包含"this string is unused"
字符串的字节。
它可能无法删除此函数,因为此函数由class D
的虚拟表引用。虚拟表class D
由其构造函数和析构函数引用。
相关文章:
- 如何在C++中获得"静态纯虚拟"功能?
- std::is_trivially_copyable_v 关于虚拟功能
- 隐藏重载虚拟功能的模板化访客:SFINAE 在使用?
- 为什么我无法覆盖虚拟功能?
- 虚拟功能不起作用
- 如果在创建对象时创建了 VPTR,那么为什么具有虚拟功能的类的大小在 32 位系统上为 4,在 64 位机器上为 8
- 虚拟功能如何影响static_cast?
- __declspec(属性)和虚拟功能
- 实现来自第三方类的虚拟功能
- 消除未使用的虚拟功能
- 为什么虚拟继承即使不涉及虚拟功能也需要 vtable?
- C 虚拟功能的输出
- 抽象类 A 由类 C 继承"through"类 B "intermediary"。如何声明虚拟功能?
- 虚拟功能是否不太可能导致堆栈溢出
- 使用继承和虚拟功能应用五个规则
- 两个派生类(十六进制 二进制)的虚拟功能
- 虚拟功能编译器优化C
- 虚拟功能指针指向派生类中的函数
- 隐藏的过载虚拟功能OSX QT4
- 使用虚拟功能在C 中进行猜测