在我工作的代码库的尘土飞扬的角落里,我遇到了一个如下所示的类层次结构:
class Base1
{
int base1;
};
class Base2
{
int base2;
};
template <typename T> class A : public Base1
{
T _specialT;
};
template <> class A<int> : public Base2
{
int _special;
};
在 A 的专业化中使用 Base2 让我感到惊讶。我一直在四处寻找以了解它的确切含义,但找不到任何此类设计的示例或讨论。
在我看来,这会导致 A 从 Base1 和 Base2 继承,而 A 的其他非专用用途将仅从 Base1 继承。这给我留下了几个问题:
- 我理解正确吗?
- 以这种方式添加到层次结构中是否有任何不明显的警告?你为什么要这样做?
- 有时这会被认为是好的设计吗?