• C++函数重载


            具有相同名称但参数不同的两个或多个函数称为重载函数。在本文中,您将通过示例了解函数重载。

    函数是指将代码分组以执行特定任务的代码片段。

            在C ++编程中,如果传递的参数的个数或类型不同,则两个函数可以具有相同的名称。这些具有不同参数个数或类型(或两者兼有)参数的函数称为重载函数。例如

    1. int test() { }
    2. int test(int a) { }
    3. float test(double a) { }
    4. int test(int a, double b) { }

            这里,所有4个函数都是重载函数,因为传递给这些函数的参数不同。注意,这4个函数的返回类型并不相同。重载函数可能有也可能没有不同的返回类型,但是应该有不同的参数。

    1. // 错误代码
    2. int test(int a) { }
    3. double test(int b){ }

            即使返回类型不同,但是传递给这两个函数的参数个数和数据类型都相同。因此,编译器将抛出错误,如下图所示。

    示例1:函数重载 

    1. # include
    2. void display(int var) {
    3. std::cout << "整数:" << var << std::endl;
    4. }
    5. void display(float var) {
    6. std::cout << "浮点数:" << var << std::endl;
    7. }
    8. void display(int var1, float var2) {
    9. std::cout << "整数:" << var1;
    10. std::cout << "和浮点数:" << var2;
    11. }
    12. int main() {
    13. int a = 1;
    14. float b = 1.1;
    15. display(a);
    16. display(b);
    17. display(a, b);
    18. return 0;
    19. }

     上述代码运行结果:

    1. 整数:1
    2. 浮点数:1.1
    3. 整数:1和浮点数:1.1

            在这里,display()函数使用不同类型或数量的参数调用了三次。所有这些函数的返回类型都是相同的,但这不是必需的。

    示例2:函数重载

    1. # include
    2. using namespace std;
    3. int absolute(int var) {
    4. if (var < 0)
    5. var = -var;
    6. return var;
    7. }
    8. float absolute(float var) {
    9. if (var < 0.0)
    10. var = -var;
    11. return var;
    12. }
    13. int main() {
    14. int a = -1;
    15. float b = 1.1;
    16. cout << "数字 " << a << " 的绝对值= " << absolute(a) << endl;
    17. cout << "数字 " << b << " 的绝对值= " << absolute(b);
    18. return 0;
    19. }

     上述代码运行结果为:

    1. 数字 -1 的绝对值= 1
    2. 数字 1.1 的绝对值= 1.1

            在上面的示例中,两个 absolute()函数被重载。这两个函数都采用单个参数。但是,一个函数将integer作为参数,而另一个将float作为参数。
            以int作为参数调用absolute()函数时,调用此函数:
    示例

    int absolute(int var) {
         if (var < 0)
             var = -var;
        return var;
    }

    以float作为参数调用absolute()函数时,将调用此函数:

    示例

    float absolute(float var){
        if (var < 0.0)
            var = -var;
        return var;
    }
  • 相关阅读:
    Json字符串内容比较-超实用版
    Microservices communication
    合宙Air724UG LuatOS-Air LVGL API控件-屏幕横屏竖屏切换(Rotation)
    告前端同学书
    10、背景分离 —— 大津算法
    浅谈芯片验证中的仿真运行之 compilation unit 技术(实践篇)
    面试系列多线程:Tomcat线程池的原理
    Circle
    idea怎么将克隆的代码上传到自己的gitee(保姆级教程)
    如何捕捉牛熊转变的信号,澳福认为只需了解一个模式
  • 原文地址:https://blog.csdn.net/m0_48241022/article/details/133651801