我知道一个冗长复杂的内联方法可能会影响性能(尽管一个简单的简单方法可能会提高性能)。但是,必须在头文件中定义模板类的方法。它们是内联吗?如果是这样,会对表演产生什么影响吗?我应该在模板类中使用冗长复杂的方法吗?
答案 0 :(得分:5)
如果编译器认为它会提高性能,它将内联函数。如果它认为它不会提高性能,它就不会内联它,即使它是在标题中定义的。如果它实际上没有内联函数,那么当这个函数出现在不同的编译单元中时,链接器也不会感到困惑。
即使声明函数inline
,同样适用。
所以编译器做了最好的事情,你不必担心它。
答案 1 :(得分:1)
您应该编写所需的代码并将其留给编译器以确定如何最好地使用它。在头文件中定义模板函数不会使它们内联;编译器可能会内联它们,也可能没有。