美文网首页想法简友广场C++学习笔记
第八章 函数探幽(4)函数重载

第八章 函数探幽(4)函数重载

作者: 阿厉a_li | 来源:发表于2019-12-25 09:29 被阅读0次

(四)函数重载

(1)函数重载的含义是可以有多个重名的函数,因此需要对函数进行重载。可以通过函数重载来设计一系列同名的函数,它们能完成相似的工作,但使用不同的参数列表。函数重载本质上是不同的函数,这与函数的默认参数是完全不同的,函数的默认参数使用的都是同一个函数,只不过后面的参数可以省略罢了。

(2)函数重载的关键是函数的参数列表,也称为函数特征标(function signature)。如果函数调用的时候和所有的函数原型都不匹配,那么会进行强制类型转换,如果这种强制类型转换不能有唯一的选择的话,就会产生错误,这是需要程序设计者重视起来的,正确的做法是提供所有可能的原型或者提供唯一的选择

(3)引用和变量名是不同类型的参数,但程序是不能区分开的,因此引用和变量名其实是相同的特征标。另外,是特征标而不是函数类型使得可以对函数进行函数重载,函数返回类型不同不能区分不同的函数,此时函数特征标也必须不同,否则就会产生错误。当有多种可以用的重载时,函数将使用最匹配的那个,但如果不能区分出哪个最匹配,就会出现错误

(4)const引用可以使用非const的对象,但是非const引用不能使用const对象,这是为了数据安全而制定的规则。

(5)函数重载不能滥用,基本上是函数能执行同样的任务,但是处理的数据不同的时候才使用函数重载。有时候可以使用默认参数的功能来实现同样的任务,这一点需要注意。

(6)如果在函数的声明中使用了默认值,那么在函数调用的时候可以不带入参数,如果此时使用不带参数的函数进行函数的重载就会出现定义模糊的现象,编译器将拒绝此类代码

(7)关于特征标的问题:对于用const修饰的变量,认为是不同的特征标,是可以重载的,比如const变量和const引用。左值引用和右值引用也是不同的特征标。而类型引用和类型本身视为同一个特征标,因为计算机本身无法通过输入的参数来进行识别。

相关文章

  • 第八章 函数探幽(4)函数重载

    (四)函数重载 (1)函数重载的含义是可以有多个重名的函数,因此需要对函数进行重载。可以通过函数重载来设计一系列同...

  • Cocos2dx之C++基础(四)

    函数重载函数不以返回值来区分重载函数函数不以参数名来区分重载函数使用重载函数的时候不要引起二义性结构函数也可以重载...

  • Kotlin 函数4 - 函数重载与默认参数

    Kotlin 函数4 - 函数重载与默认参数 在 Kotlin 中可以使用默认参数的方式来代替函数的重载,就像下面...

  • [进阶]C++:函数重载

    定义重载函数 重载函数是函数名相同但是参数列表不同的函数 重载和const形参 const_cast 在重载函数中...

  • Vue3源码中的TypeScript重载函数的作用

    TypeScript重载函数的作用案例 C++中的一个概念(百度百科): 函数重载一般指重载函数。 重载函数是函数...

  • Typescript中的函数

    1. 函数表达式 2. 可选参数 3 默认函数 4. 剩余函数 5 函数重载 6 箭头函数

  • C++之函数重载(下)

    重载与指针 函数重载遇上函数指针将重载函数名赋值给函数指针时根据重载规则挑选与函数指针参数列表一致的侯选者严格匹配...

  • C++ - 函数重载

    函数重载:一个或者多个函数,名字相同,然而参数个数或者参数类型不相同,这叫做函数的重载。 举例: 函数重载使得函数...

  • operator-()

    负号重载成员函数友元函数负号重载函数三种方式都可

  • Callback / Callable 类型

    重载函数,和php的伪重载函数 重载函数a. c++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的...

网友评论

    本文标题:第八章 函数探幽(4)函数重载

    本文链接:https://www.haomeiwen.com/subject/eisigctx.html