c++++ 中函数重载允许在同一类中定义同名函数,但参数列表不同;函数重写发生在子类中定义一个与父类同名且参数相同的函数,子类函数将覆盖父类函数。实战示例中,重载函数用于针对不同数据类型执行加法运算,重写函数用于覆盖父类中的虚函数,以计算不同形状的面积。

C++ 函数重载和重写:深入理解和实战应用
函数重载
函数重载允许在同一类中定义拥有相同函数名但参数列表不同的多个函数。
立即学习“C++免费学习笔记(深入)”;
class MyClass {public: int add(int a, int b); double add(double a, double b);};int MyClass::add(int a, int b) { return a + b;}double MyClass::add(double a, double b) { return a + b;}
函数重写
函数重写发生在子类中定义一个与父类同名且具有相同参数列表的函数时。子类函数将覆盖父类函数。
class ParentClass {public: virtual int display() { return 10; }};class ChildClass : public ParentClass {public: int display() { // 重写父类的 display() return 20; }};
实战案例
重载函数示例:
#include class Calculator {public: int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } std::string add(std::string a, std::string b) { return a + b; }};int main() { Calculator calc; std::cout << calc.add(1, 2) << std::endl; // 输出:3 std::cout << calc.add(1.5, 2.5) << std::endl; // 输出:4 std::cout << calc.add("Hello", "World") << std::endl; // 输出:HelloWorld return 0;}
重写函数示例:
#include class Shape {public: virtual double area() = 0; // 纯虚函数(强制子类实现 area())};class Rectangle : public Shape {public: Rectangle(double width, double height) : m_width(width), m_height(height) {} double area() override { return m_width * m_height; }private: double m_width; double m_height;};class Circle : public Shape {public: Circle(double radius) : m_radius(radius) {} double area() override { return 3.14 * m_radius * m_radius; }private: double m_radius;};int main() { Rectangle rect(5, 10); Circle circle(5); std::cout << "Rectangle area: " << rect.area() << std::endl; // 输出:50 std::cout << "Circle area: " << circle.area() << std::endl; // 输出:78.5 return 0;}
以上就是C++ 函数重载和重写的理解和使用的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1447549.html
微信扫一扫
支付宝扫一扫