template <typename T1, typename T2>
class TemplateBase {
public:
void baseProcess(T1 data1, T2 data2) {
// 这里添加具体实现
}
};
template <typename T3>
class TemplateDerived : public TemplateBase<T3, int> {
public:
void process(T3 data) {
this->baseProcess(data, 5);
}
};
优化方式
- 减少模板实例化:如果
TemplateBase
中的某些成员函数不依赖于T2
,可以将这些函数提取到一个独立的模板类中,然后让TemplateBase
从这个新类派生。这样对于不同的T2
,不会重复实例化不依赖T2
的函数,减少代码冗余。
- 使用
constexpr
:如果TemplateBase
中的baseProcess
函数逻辑比较简单,并且在编译期可以确定结果,可以将其声明为constexpr
函数。这样在编译期就能完成计算,提高运行效率。
- 内联函数:将
process
函数声明为内联函数,减少函数调用开销。在C++11及以后,可以直接在类定义中定义成员函数,编译器会自动将其视为内联函数(如果符合内联条件)。如上述代码,process
函数定义在类内,编译器可能会进行内联优化。