首页 > 后端开发 > C++ > 正文

C++ 函数继承详解:多态的本质是什么?

WBOY
发布: 2024-05-04 21:30:02
原创
1161人浏览过

函数继承概述:c++++中函数继承通过override关键字实现,允许子类覆盖父类函数,使多态成为可能,即对象在运行时表现出不同的行为,即使属于同一父类。

C++ 函数继承详解:多态的本质是什么?

C++ 函数继承详解:多态的本质

在面向对象编程中,继承是重要的机制,它允许子类从父类继承数据成员和成员函数。函数继承是指从父类到子类的成员函数的继承。

多态简介

多态是面向对象编程中的一个关键概念,它允许对象在运行时表现出不同的行为,即使它们属于同一父类。函数继承是实现多态的一种方式。

函数继承

在 C++ 中,函数继承通过 override 关键字实现。当子类定义了一个与父类同名且具有相同签名的函数时,该函数被标记为 override。这会告诉编译器,子类正在覆盖父类的函数。

立即学习C++免费学习笔记(深入)”;

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

class Derived : public Base {
public:
    virtual void print() override {
        std::cout << "Derived class" << std::endl;
    }
};
登录后复制

在此示例中,Base 类定义了一个 print() 函数,而 Derived 类通过 override 关键字覆盖了该函数。因此,当调用 Derived 类对象的 print() 函数时,它将打印 "Derived class",而不是 "Base class"。

KAIZAN.ai
KAIZAN.ai

使用AI来改善客户服体验,提高忠诚度

KAIZAN.ai 35
查看详情 KAIZAN.ai

虚函数

override 函数必须是虚函数。虚函数通过 virtual 关键字声明,它允许子类覆盖父类的函数。在上面的示例中,print() 函数是虚函数。

实战案例

下面是一个演示函数继承和多态的代码案例:

#include <iostream>

class Shape {
public:
    virtual double getArea() = 0;
};

class Rectangle : public Shape {
public:
    double width, height;
    Rectangle(double w, double h) : width(w), height(h) {}
    double getArea() override { return width * height; }
};

class Circle : public Shape {
public:
    double radius;
    Circle(double r) : radius(r) {}
    double getArea() override { return 3.14 * radius * radius; }
};

int main() {
    Shape* shapes[] = {new Rectangle(2, 3), new Circle(4)};

    for (int i = 0; i < 2; i++) {
        std::cout << "Area of " << (i == 0 ? "Rectangle" : "Circle") << ": " << shapes[i]->getArea() << std::endl;
    }

    return 0;
}
登录后复制

在该案例中,Shape 是形状类的基类,它定义了一个纯虚函数 getArea()RectangleCircle 类从 Shape 类继承,并覆盖了 getArea() 函数以计算各自的面积。

main() 函数中,使用多态,一个基类数组被用于存储 RectangleCircle 对象。由于 getArea() 函数被覆盖,因此会根据对象类型打印正确的面积。

通过函数继承和多态,我们可以构建具有不同行为的灵活和可扩展的程序。

以上就是C++ 函数继承详解:多态的本质是什么?的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号