C++ 什么';将派生类用作模板参数是什么?
这种模式的目的是什么?它叫什么?当我第一次看到它时,它看起来很奇怪,尽管我现在已经看过很多次了C++ 什么';将派生类用作模板参数是什么?,c++,templates,terminology,crtp,static-polymorphism,C++,Templates,Terminology,Crtp,Static Polymorphism,这种模式的目的是什么?它叫什么?当我第一次看到它时,它看起来很奇怪,尽管我现在已经看过很多次了 template<typename Derived> struct Base { //... }; struct Example : Base<Example> { //... }; 模板 结构基{ //... }; 结构示例:Base{ //... }; ,或者我们所说的CRTP。它被称为模式,允许静态多态性 当您希望向特定类添加功能,但希望该实用程序在一般情况下
template<typename Derived>
struct Base {
//...
};
struct Example : Base<Example> {
//...
};
模板
结构基{
//...
};
结构示例:Base{
//...
};
,或者我们所说的CRTP。它被称为模式,允许静态多态性
当您希望向特定类添加功能,但希望该实用程序在一般情况下可用时,它非常有用。通过使实用程序依赖于模板参数并使用模板参数,您可以同时实现这两个功能。我想您正在参考。也可参考4秒前的第一个答案;你们这些家伙在偷懒@Thomson Tan:请仔细注意@GMan关于静态多态性的观点。这是很重要的一点。它提供模拟来自基类的虚拟函数调用,而不需要虚拟函数的开销(如果这很重要)