template<typename T>
class Base
{
public:
void PrintA()
{
static_cast<T*>(this)->WriteA();
}
};
class XX:public Base<XX>
{
private:
friend Base<XX>;
void WriteA()
{
std::cout<< "XX" << "\n";
}
};
int main()
{
XX x1;
x1.PrintA();
}
CRTP的好处
1、静态多态:CRTP实现静态多态,无需使用势函数,静态绑定,无运行时开销。
2、类型安全:CRTP提供了类型安全的多态性。通过模版参数传递具体的子类型,编译器能够确保类型匹配,避免了传统向下转换可能引发的类型错误。
3、灵活的接口设计:CRTP允许父类定义公共接口,并要求子类实现具体操作。这使得基类能够提供通用接口,而具体的实现细节留给派生类。
522

被折叠的 条评论
为什么被折叠?



