是否可以将纯虚函数覆盖到模板?

时间:2018-10-19 07:40:49

标签: c++ templates

我不知道这是否可能: 可以说我有一个定义以下内容的接口:

virtual void func()=0;

在具体的类中是否有可能像下面这样重写它:

template <std::size_t  number> 
void func(){ /* do something with number... */ }

谢谢!

2 个答案:

答案 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)

否。

函数模板绝不会覆盖虚拟函数,无论是纯函数还是其他函数。