当您使用具有多种方法(例如向量)的模板并编译代码时,编译器会丢弃未使用的方法中的代码吗?
除非使用模板,否则不会实例化模板,因此实际上没有任何代码可以丢弃。
标准说(14.7.1/10)
实现不得隐式实例化不需要实例化的函数模板、成员模板、非虚成员函数、成员类或类模板的静态数据成员。如果虚拟成员函数不会被实例化,则未指定实现是否隐式实例化类模板的虚拟成员函数。在默认参数中使用模板特化不应导致模板被隐式实例化,除非类模板可以在需要其完整类型来确定默认参数的正确性时被实例化。在函数调用中使用默认参数会导致默认参数的特化被隐式实例化。
因此,如果您可以避免将模板的成员函数设为虚拟,则编译器将不会为它们生成任何代码(如果编译器足够智能,这也可能适用于虚拟函数)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)