0
某个类的专门版本可能共享原始模板类的部分或全部功能吗?专用版本可能与原始模板类共享某些功能吗?
即考虑有一个模板类,
template <typename T>
class A
{
A()
{}
A(const A& ref)
{}
void f1()
{
//do something
}
void f2()
{
//do something
}
void f3()
{
//do something
}
}
,它有特定的数据类型,其中只有打算一些另外的功能添加到通用版本,除了原有的通用功能的专用版本。
template<>
class A<int>
{
void f4()
{
//do something
}
}
现在我特别希望的是,这个专门的版本,从它的通用版本,包括构造函数如果可能的话可以分享一切。
也许继承是一个更好的选择吗? –
不,它不可能像你想的那样直。记住这一点:每个模板专业化是一个单独的类定义,具有不同的类型(因此,名称(编译器,无论它们看起来像是同名) –
如果您不知道,可以专门化一个类模板的单个功能,而不需要专门研究整个类。 –