CRTP(Curiously Recurring Template Pattern)是一種C++設計模式,通過模板繼承的方式實現了靜態多態性。CRTP的使用方法如下:
template <typename Derived>
class Base {
public:
void doSomething() {
static_cast<Derived*>(this)->implementation();
}
private:
void implementation() {
// 具體實現
}
};
class Derived : public Base<Derived> {
public:
// 實現Derived類的具體功能
};
void implementation() {
// 具體實現
}
通過這種方式,基類中的doSomething
函數可以動態調用派生類中的implementation
函數,實現了靜態多態性。CRTP模式的優點在于它避免了虛函數的開銷,同時提高了代碼的可讀性和性能。