长,复杂的模板成员方法会影响性能吗?

时间:2013-04-24 00:26:00

标签: c++ templates

我知道一个冗长复杂的内联方法可能会影响性能(尽管一个简单的简单方法可能会提高性能)。但是,必须在头文件中定义模板类的方法。它们是内联吗?如果是这样,会对表演产生什么影响吗?我应该在模板类中使用冗长复杂的方法吗?

2 个答案:

答案 0 :(得分:5)

如果编译器认为它会提高性能,它将内联函数。如果它认为它不会提高性能,它就不会内联它,即使它是在标题中定义的。如果它实际上没有内联函数,那么当这个函数出现在不同的编译单元中时,链接器也不会感到困惑。

即使声明函数inline,同样适用。

所以编译器做了最好的事情,你不必担心它。

答案 1 :(得分:1)

您应该编写所需的代码并将其留给编译器以确定如何最好地使用它。在头文件中定义模板函数不会使它们内联;编译器可能会内联它们,也可能没有。