当前位置:首页 C++ > 正文

c++多态的定义以及虚函数重写(覆盖)

作者:野牛程序员:2024-01-03 13:34:47 C++阅读 2678

多态是面向对象编程中的一个重要概念,它允许不同的子类对象通过它们的共同基类接口进行访问。在C++中,多态通过虚函数(virtual functions)来实现。以下是对C++多态的定义以及虚函数的重写(覆盖)的解释:

多态性是指在相同的函数调用中,可以有多个不同的实现方式,具体取决于调用这个函数的对象的类型。这使得程序可以根据运行时对象的实际类型来选择调用合适的函数,而不是在编译时确定。

虚函数是在基类中声明为virtual的成员函数。在派生类中,可以通过重写(覆盖)基类中的虚函数来提供特定于派生类的实现。下面是一个简单的例子:

#include <iostream>

class Shape {
public:
    // 虚函数
    virtual void draw() {
        std::cout << "Drawing a shape" << std::endl;
    }
};

class Circle : public Shape {
public:
    // 重写基类的虚函数
    void draw() override {
        std::cout << "Drawing a circle" << std::endl;
    }
};

class Square : public Shape {
public:
    // 重写基类的虚函数
    void draw() override {
        std::cout << "Drawing a square" << std::endl;
    }
};

int main() {
    Shape* shape1 = new Circle();
    Shape* shape2 = new Square();

    // 调用虚函数,根据对象的实际类型选择正确的实现
    shape1->draw();  // 输出:Drawing a circle
    shape2->draw();  // 输出:Drawing a square

    delete shape1;
    delete shape2;

    return 0;
}

在上述示例中,Shape 类有一个虚函数 draw(),然后有两个派生类 CircleSquare 分别重写了 draw() 函数。在 main() 函数中,通过指向基类的指针分别创建了 CircleSquare 对象,并调用了它们的 draw() 函数。由于 draw() 是虚函数,实际上调用的是对象的实际类型对应的函数实现,实现了多态性。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击