C ++中的模板和虚函数?允许?

时间:2011-08-27 06:10:50

标签: c++ templates virtual

我已经通过网络阅读了不允许使用模板虚拟功能的信息,这是真的吗? 这有点奇怪,因为这段代码在我的Eclipse&#g ++上编译得很好

template <class T>
class A {

public:
    virtual ~A<T>() { }
    virtual void printMe() {cout << "I am A class" << endl;}
};

template <class T>
class B: public A<T> {

public:
    void printMe() {cout << "I am B class" << endl;}
};

int main() {

    A<int> * ptr = new B<int>;
    ptr->printMe();
    delete ptr;
    return 0;
}

的问候,罗南

2 个答案:

答案 0 :(得分:3)

模板类型中的虚拟方法(如示例所示)有效。

您所引用的限制采用以下形式:

class type {
  //...
  template <typename T> virtual void r() const;
};

答案 1 :(得分:0)

这里有的不是模板虚拟函数,而是包含普通虚函数的模板类。

正如您所发现的,这非常好。