我不知道这是否可能: 可以说我有一个定义以下内容的接口:
virtual void func()=0;
在具体的类中是否有可能像下面这样重写它:
template <std::size_t number>
void func(){ /* do something with number... */ }
谢谢!
答案 0 :(得分:6)
在具体的类中是否有可能像下面这样重写它:
不,那是行不通的。
考虑这种情况。
struct Base
{
virtual void func()=0;
};
struct Derived : Base
{
template <std::size_t number>
void func(){}
};
和
Base* b = new Derived;
b->func(); // Which of the Derived::func() should that resolve to at run time?
// Derived::func<0>()?
// Derived::func<10>()?
// ...
那根本没有概念意义。
答案 1 :(得分:3)
否。
函数模板绝不会覆盖虚拟函数,无论是纯函数还是其他函数。