美文网首页
函数重载(Overload) 默认参数

函数重载(Overload) 默认参数

作者: 曹来东 | 来源:发表于2019-06-11 17:15 被阅读0次

函数名完全相同,但参数个数,参数类型和顺序不同的函数,彼此构成函数重载.C语言不支持函数重载.

规则

  • 函数名相同
  • 参数个数不同,参数类型不同,参数顺序不同.

注意

  • 返回值类型与函数重载无关
int fun() {}
float fun() {}

这两个函数不能构成函数重载.会报错.因为引起了 歧义,二义性.

int fun(int a) {}
float fun() {}

函数名相同,参数个数不同,这两个行数构成重载.与返回值无关.

void display(long a){}
void display(int a){}
void display(double a){}

dispaly(10)//void display(int a)
dispaly(10L)//void display(long a)
dispaly(10.0)//void display(double a)

此时以上三个函数构成重载.

void display(long a){}
void display(double a){}
dispaly(10)

此时报错,参数的隐式转换,导致 二义性,编译器不知道把int 10转换成long类型还是double类型.所以报错.

C++为什么可以支持函数重载

  • 采用了name mangling或者叫那么decoration技术
  • C++编译器默认会对符号名(比如函数名)进行改编,修饰,有些地方翻译为'命名倾轧'
  • 重载时回生成多个不同的函数名,不同编译器(MSVC,g++)有不同的规则.

默认参数

C++允许函数设置默认参数,在调用时可以根据情况省略实参.

规则如下:

  • 默认参数只能按照从右到左的顺序
  • 如果函数同时又声明,实现,默认参数只能放在函数声明中
  • 默认参数的值可以是常量,全局符号(全局变量,函数名)

相关文章

  • Go语言学习笔记 - 函数

    函数 不支持 嵌套 (nested)、重载 (overload) 和 默认参数 (default paramete...

  • Go 语言教程(3)——函数

    函数定义 不支持嵌套(nested)、重载(overload)和默认参数(default paramter)。 无...

  • 函数重载(Overload) 默认参数

    函数名完全相同,但参数个数,参数类型和顺序不同的函数,彼此构成函数重载.C语言不支持函数重载. 规则 函数名相同 ...

  • 函数重载、extern C、默认参数

    函数重载 Overload Overload就是同一个上下文允许出现同名函数,但是参数个数不同、参数类型不同、参数...

  • 2.C++对C的扩展

    重载(overload) C++中,引用了函数重载的概念,函数名同名,参数列表不同形成重载。重载规则: 函数名相同...

  • 函数override/overload/overwrite

    overload重载:多个函数同一函数名不同参数类型不同参数个数不同参数顺序,即函数重载。 在同一类内多个函数名相...

  • C++ 函数重载 默认参数 内联函数

    函数重载 (overload) 规则 函数名相同 参数个数不同、参数类型不同、参数顺序不同 注意 返回值类型和函数...

  • c++函数特性

    函数重载,参数默认值,内联函数 重载:函数名相同,参数列表不同,作用域相同。 参数默认值:参数默认值必须从最后开始...

  • TypeScript函数

    可选参数(y?) 默认参数 剩余参数 函数重载

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

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

网友评论

      本文标题:函数重载(Overload) 默认参数

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