C++中实现多态
有三种:虚函数、抽象类和模板。
虚函数
虚函数是C++中实现多态的最常用方法,它是通过在函数前加上关键字“virtual”来实现的。虚函数可以被子类重写,当调用虚函数时,会根据对象的类型来调用不同的函数,实现多态。例如:
class Base { public: virtual void func() { cout << "Base::func()" << endl; } }; class Derived : public Base { public: void func() { cout << "Derived::func()" << endl; } }; int main() { Base *pBase = new Derived(); pBase->func(); // 输出 Derived::func() return 0; }
抽象类
抽象类是通过将类中的某些函数声明为纯虚函数来实现的,纯虚函数是没有实现的虚函数,只有声明,由子类实现。抽象类不能被实例化,只能被继承,子类必须实现抽象类中的纯虚函数,才能被实例化。例如:
class Base { public: virtual void func() = 0; }; class Derived : public Base { public: void func() { cout << "Derived::func()" << endl; } }; int main() { Derived derived; derived.func(); // 输出 Derived::func() return 0; }
模板
模板是C++中实现多态的另一种方法,它是通过将类型作为参数传递给模板函数来实现的。模板函数会根据传入的参数类型来调用不同的函数,实现多态。例如:
templatevoid func(T t) { t.func(); } class Base { public: void func() { cout << "Base::func()" << endl; } }; class Derived : public Base { public: void func() { cout << "Derived::func()" << endl; } }; int main() { Base base; Derived derived; func(base); // 输出 Base::func() func(derived); // 输出 Derived::func() return 0; }
以上三种方法都可以用来实现C++中的多态,选择哪种方法取决于实际需求。