赞
踩
多态是面向对象编程的核心概念之一,它允许我们通过基类接口调用派生类的方法。在C++中,多态主要通过虚函数来实现。本文将深入探讨C++中的多态机制,重点讲解虚函数和纯虚函数的区别。
多态性允许我们编写可以对不同类型的对象执行不同操作的代码。在C++中,这通常是通过虚函数实现的。虚函数允许派生类重写基类中的方法,从而实现不同类对象对同一接口的不同实现。
在C++中,虚函数是在基类中使用virtual
关键字声明的函数。当基类指针或引用指向派生类对象时,调用虚函数将执行派生类中的版本。
- class Base {
- public:
- virtual void display() {
- std::cout << "Base display" << std::endl;
- }
- };
-
- class Derived : public Base {
- public:
- void display() override { // 使用 override 确保函数被正确重写
- std::cout << "Derived display" << std::endl;
- }
- };
- Base* basePtr = new Derived();
- basePtr->display(); // 输出 "Derived display"
- delete basePtr;
纯虚函数是一种特殊的虚函数,它在基类中没有实现,并且要求所有派生类都必须提供实现。如果派生类没有实现纯虚函数,那么派生类也将成为抽象类。
纯虚函数在基类中使用virtual
关键字和= 0
来声明。
- class AbstractBase {
- public:
- virtual void pureVirtualFunc() = 0; // 纯虚函数
- };
包含至少一个纯虚函数的类被称为抽象类。抽象类不能被实例化,但可以作为其他类的基类。
- class Concrete : public AbstractBase {
- public:
- void pureVirtualFunc() override {
- std::cout << "Concrete implementation" << std::endl;
- }
- };
override
关键字来重写虚函数,这有助于编译器检查是否正确重写了基类中的虚函数。多态是C++中一个强大的特性,它提高了代码的灵活性和可扩展性。理解虚函数和纯虚函数的区别对于正确使用多态至关重要。通过合理利用多态,我们可以编写出更加模块化和易于维护的代码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。