当在C++中定义模板类时,可以使用虚函数来实现多态性。虚函数是通过基类指针或引用调用派生类的函数的一种机制。模板类中的虚函数可以根据模板参数的类型进行实例化。
在模板类中定义虚函数时,需要注意以下几点:
- 虚函数必须在类的内部定义,不能在类的外部定义。
- 虚函数可以在模板类的基类或派生类中进行覆盖。
- 虚函数可以通过基类指针或引用进行调用,实现多态性。
下面是一个示例代码,演示了模板类中的虚函数的用法:
#include <iostream> template <typename T> class Base { public: virtual void print() { std::cout << "Base class" << std::endl; } }; template <typename T> class Derived : public Base<T> { public: void print() override { std::cout << "Derived class" << std::endl; } }; int main() { Base<int>* ptr = new Derived<int>(); ptr->print(); // 调用派生类的虚函数 delete ptr; return 0; }
输出结果为:
Derived class
这里定义了一个模板类Base
,其中包含一个虚函数print
。然后定义了一个模板类Derived
,继承自Base
,并覆盖了print
函数。在main
函数中,通过基类指针ptr
指向派生类对象,并调用print
函数,实现了多态性。