下面的代码用
gcc v4.3.3编译,并且模板化的子类似乎覆盖了父级中的虚函数,但是这不会破坏你不能拥有虚拟模板函数的规则吗?或者是其他发生的事情,我不明白?
class BaseClass
{
public:
virtual void Func(int var)
{
std::cout<
}
virtual void Func(double var)
{
std::cout<
}
};
template
class TemplateClass : public BaseClass
{
public:
using BaseClass::Func;
virtual void Func(TT var)
{
std::cout<
}
};
int main(int argc, char **argv)
{
BaseClass a;
TemplateClass b;
BaseClass *c = new TemplateClass;
int intVar = 3;
double doubleVar = 5.5;
a.Func(intVar);
a.Func(doubleVar);
b.Func(intVar);
b.Func(doubleVar);
c->Func(intVar);
c->Func(doubleVar);
delete c;
}
然后输出:
基础int 3
基数双5.5
儿童TT 3
基数双5.5
儿童TT 3
基数双5.5
正如我所希望的那样,但我不确定它为什么会起作用.