文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++ 函数重写实战:实现子类专属功能的妙招

2024-05-01 14:23

关注

函数重写允许子类重新定义基类的同名函数,实现特定于子类的功能:基于名称查找和类型匹配,当子类定义同名函数时,会重写基类函数。这允许子类提供不同的实现,例如示例中 circle 和 rectangle 类重写 shape 类的 area() 函数来计算其特有的面积。

C++ 函数重写:子类专属功能的实现

函数重写是 C++ 中一种重要的机制,它允许子类重新定义基类中同名函数的行为。这对于定义特定于子类的特定功能非常有用。

原理

函数重写基于名称查找和类型匹配规则。当调用一个函数时,编译器会搜索作用域中具有匹配名称的函数。如果找到多个重载函数,则使用最佳匹配原则进行选择。

如果子类定义了与基类同名的函数,则子类中的函数将重写基类中的函数。这允许子类提供与基类不同的实现。

实战案例

考虑一个场景,其中我们有一个 Shape 基类,表示一个通用形状。派生类 CircleRectangle 分别表示圆形和矩形。我们需要计算这些形状的面积。

基类 Shape

class Shape {
public:
    virtual double area() const = 0;  // 纯虚函数
};

派生类 Circle

class Circle : public Shape {
public:
    Circle(double radius) : radius(radius) {}

    double area() const override {
        return M_PI * radius * radius;
    }

private:
    double radius;
};

派生类 Rectangle

class Rectangle : public Shape {
public:
    Rectangle(double width, double height)
        : width(width), height(height) {}

    double area() const override {
        return width * height;
    }

private:
    double width, height;
};

使用

我们可以使用这些类来计算不同形状的面积:

int main() {
    Circle circle(5.0);
    Rectangle rectangle(3.0, 4.0);

    std::cout << "Area of circle: " << circle.area() << std::endl;
    std::cout << "Area of rectangle: " << rectangle.area() << std::endl;

    return 0;
}

输出:

Area of circle: 78.5398
Area of rectangle: 12.0

在这个示例中,CircleRectangle 类重写了 Shape 类中定义的 area() 函数。这允许我们实现每个形状特有的面积计算逻辑。

以上就是C++ 函数重写实战:实现子类专属功能的妙招的详细内容,更多请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯