商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Linux C++中多态的实现方式

Linux C++中多态的实现方式

  发布于2026-07-12 阅读(0)

扫一扫,手机访问

在C++的面向对象体系里,多态是一个绕不开的核心概念。简单来说,它允许我们用基类的指针或引用去调用派生类的成员函数,实现所谓的动态绑定。那么,具体怎么做到的呢?主要靠两条路——虚函数和抽象类。往下看。

Linux C++中多态的实现方式

一、虚函数

虚函数,就是在基类中用关键字 virtual 声明的成员函数。派生类拿到这个基类后,可以重写(override)这些函数。关键来了:当通过基类的指针或引用去调用虚函数时,C++ 不会只看指针的静态类型,而是根据它实际指向的对象类型来决定调用哪个函数。这就是动态绑定的本质。

看个例子就清楚了:

#include 

class Base {
public:
    virtual void print() {
        std::cout << "Base class print function" << std::endl;
    }
};

class Derived : public Base {
public:
    void print() override {
        std::cout << "Derived class print function" << std::endl;
    }
};

int main() {
    Base *basePtr;
    Derived derivedObj;
    basePtr = &derivedObj;
    basePtr->print(); // 输出的是 Derived 类的版本
    return 0;
}

这里 basePtr 明明是 Base 类型的指针,但它指向的是 Derived 对象,所以调用 print() 时,输出的是 “Derived class print function”。如果没有 virtual,那就会调用 Base 的版本——差别就在这。

二、抽象类

抽象类是一种不能实例化的类,它通常用来定义接口。怎么定义?靠纯虚函数(pu re virtual function)。纯虚函数在基类中只有声明,没有实现,必须在派生类里完成具体的逻辑。只要一个类包含至少一个纯虚函数,它就成了抽象类。

示例很直观:

#include 

class AbstractBase {
public:
    virtual void print() = 0; // 纯虚函数,没有实现
};

class Derived : public AbstractBase {
public:
    void print() override {
        std::cout << "Derived class print function" << std::endl;
    }
};

int main() {
    AbstractBase *abstractBasePtr;
    Derived derivedObj;
    abstractBasePtr = &derivedObj;
    abstractBasePtr->print(); // 输出 Derived 类的版本
    return 0;
}

你看,AbstractBase 本身不能创建对象,但是可以定义指针,指向派生类对象,然后调用派生类实现的 print()。这种设计在框架和库中非常常见——通过抽象类定义一套接口契约,具体行为留给子类去填充。

说到底,C++ 里的多态就是靠虚函数和抽象类这两板斧。虚函数让动态绑定成为可能,抽象类则帮我们搭出清晰的接口架构。用好它们,代码的扩展性和可维护性会提升一个档次。

本文转载于:https://www.yisu.com/ask/25983330.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注