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

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

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

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

函数重写是 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.5398Area of rectangle: 12.0

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1448998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月18日 02:00:06
下一篇 2025年12月18日 02:00:27

相关推荐

发表回复

登录后才能评论
关注微信