以下声明是什么意思
What does the following declarations mean?
我有一个从类A继承的类B,但我不明白为什么类B以这种方式声明。
class B : public A <B>
{
public:
...
};
template <class T>
class A
{
public:
....
}
正如PeterT已经指出的,这是一个奇怪的重复模板模式(CRTP(。这是一种在C++中实现静态多态性的方法,因为基类A
了解子类B
及其(内部(类型和状态。
例如,A
中的逻辑可以返回正确类型的对象,这在动态多态性中是不可能的。CRTP允许将该逻辑移动到基类,在基类中,动态多态性需要派生类中的虚拟函数来处理适合B
的正确类型。
这里给出了更详细的解释。
类A是一个模板类。因此,在继承时,B必须为templae参数T提供值,在本例中为"B"。但您必须将A的类定义放在B之前,否则将出现编译错误。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?