漫谈C与C++(《Effictive C++》/关于函数重载)

目录

前言

概述

函数重载


前言

最近浏览《Effictive C++》,突然发现:C语言不支持函数重载,C++能够支持这一特性。确实有点颠覆认知。看有关C++的书籍多一点的缘故吧!

概述

函数重载

在 C++ 中,函数重载是指可以定义多个同名函数,但它们的参数列表必须不同(包括参数类型、参数个数或参数顺序)。通过函数重载,我们可以使用相同的函数名来实现不同的功能。

  1. 函数名相同:在函数重载中,函数名必须相同。

  2. 参数列表不同:函数重载通过参数列表的差异来区分不同的函数。参数列表包括参数的类型、个数和顺序。

    cpp 复制代码
    #include <iostream>
    
    void print(int num) {
        std::cout << "Integer number: " << num << std::endl;
    }
    
    void print(double num) {
        std::cout << "Double number: " << num << std::endl;
    }
  3. 返回类型不同:C++ 不允许只根据返回类型的不同来进行函数重载。因为编译器无法仅根据返回类型来确定调用哪个函数。

    cpp 复制代码
    #include <iostream>
    
    void print(int num) {
        std::cout << "Integer number: " << num << std::endl;
    }
    
    int print(int num) {
        std::cout << "Double number: " << num << std::endl;
    }

    以上实例是无法编译通过的。

  4. 可以重载成员函数:在类中,成员函数之间也可以进行重载,遵循上述规则。

  5. const 成员函数:const 成员函数与非 const 成员函数可以进行重载。当对象为 const 时,会调用 const 成员函数;否则调用非 const 成员函数。

  6. 默认参数:函数重载中可以使用默认参数,但要注意默认参数的位置应该放在非默认参数的后面。

相关推荐
云和数据.ChenGuang5 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
WL学习笔记6 小时前
vector模拟实现
c++
蜗牛一步步往上爬8 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
张张123y10 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
wo_jack12 小时前
C++ 入门笔记(十六):第16课 vector 模拟实现十问十答 —— 从三指针到迭代器失效
c++·后端·面试·stl·vector
D e re k ZH12 小时前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶13 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing0314 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊14 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆67515 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典