C++函数重载 和 函数重写

函数重载

函数重载允许在C++中使用相同的函数名字但是拥有不同参数列表的多个函数。这些函数可以有不同数量或类型的参数。当你调用一个重载函数时,编译器会根据提供的参数数量和类型来确定调用哪个版本的函数。

  • double calculateArea(double radius) 用于计算圆的面积; double

  • calculateArea(double width, double height) 用于计算矩形的面积; double

  • calculateArea(double side1, double side2, double side3) 用于计算三角形的面积。

    重写(Overriding)是指派生类重新定义了基类中已经存在的虚函数的行为。通过重写,派生类可以根据自身的需求提供特定的实现,而不是简单地继承基类中的实现。

函数重写

在C++中,要进行函数重写,需要满足以下条件:

  1. 基类中的函数必须声明为虚函数。
  2. 派生类中的函数必须使用相同的函数名、参数列表和返回类型。
  3. 派生类中的函数必须声明为虚函数,尽管不是必需的,但是最好使用 override 关键字进行显式标记,以确保它是对基类虚函数的重写。

以下是一个简单的示例:

cpp 复制代码
#include <iostream>

// 基类 Animal
class Animal {
public:
    virtual void speak() {
        std::cout << "Animal speaks" << std::endl;
    }
};

// 派生类 Dog 重写了基类中的 speak() 函数
class Dog : public Animal {
public:
    void speak() override {
        std::cout << "Dog barks" << std::endl;
    }
};

// 派生类 Cat 重写了基类中的 speak() 函数
class Cat : public Animal {
public:
    void speak() override {
        std::cout << "Cat meows" << std::endl;
    }
};

int main() {
    Animal animal;
    Dog dog;
    Cat cat;

    animal.speak(); // 输出 "Animal speaks"
    dog.speak();    // 输出 "Dog barks"
    cat.speak();    // 输出 "Cat meows"

    return 0;
}

在这个示例中,Dog 类和 Cat 类都重写了 Animal 类中的 speak() 函数。当通过基类指针或引用调用 speak() 函数时,根据对象的实际类型会调用相应的重写版本,实现了多态性。

相关推荐
紫丁香6 分钟前
pytest_自动化测试3
开发语言·python·功能测试·单元测试·集成测试·pytest
bearpping8 分钟前
java进阶知识点
java·开发语言
波特率1152009 分钟前
C++当中is-a(继承)与has-a(成员对象)的辨析与使用指南(包含实际工程当中的使用示例)
c++·ros·串口通信
杰杰7989 分钟前
Python面向对象——类的魔法方法
开发语言·python
Joker Zxc10 分钟前
【前端基础(Javascript部分)】6、用JavaScript的递归函数和for循环,计算斐波那契数列的第 n 项值
开发语言·前端·javascript
kkkkatoq11 分钟前
JAVA中的IO操作
java·开发语言
Highcharts.js12 分钟前
React 图表如何实现下钻(Drilldown)效果
开发语言·前端·javascript·react.js·前端框架·数据可视化·highcharts
Queenie_Charlie15 分钟前
最长回文子串 V2(Manacher算法)
c++·算法·manacher算法
s090713640 分钟前
【声纳成像】基于滑动子孔径与加权拼接的条带式多子阵SAS连续成像(MATLAB仿真)
开发语言·算法·matlab·合成孔径声呐·后向投影算法·条带拼接
不想看见4041 小时前
C++八股文【详细总结】
java·开发语言·c++