我是靠谱客的博主 畅快冰棍,最近开发中收集的这篇文章主要介绍重载函数、内联函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

重载函数

:两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器会根据实参类型及个数的最佳匹配来自动确定调用哪一个函数。

int add(int x,int y){......};
float add(float x,float y){......};
int add(int x,int y,int z){......};
float add(float x,float y,float z){......};
int main(){
int a,b,c;
float f1,f2;
add(a,b);//int add(int x,int y);
add(f1,f2);//int add(float x,float y)
add(a,b,c);//int add(int x,int y,int z)
return 0;

注意:1、不能以形参名字或函数返回值类型不同来区分函数,编译器不能以返回值来区分函数。2、不要将功能不同的函数定义为重载函数,以免出现混淆

带默认形参值的函数

定义:在定义函数时预先声明默认的形参值,调用时如果给出实参,则用实参初始化形参,否则采用预先声明的默认参数值。
注意:1、默认参数值必须按照从右向左的顺序声明,在有默认值的形参右边,不能出现无默认值的形参。2、默认形参值可以在函数原型中给出。
在相同的作用域内,默认形参值的说明应保持唯一;但在不同的作用域内,允许说明不同的默认形参值。

int add(int x=5,int y=6);
int main(){
int add(int x=7,int y=8);
int ret=add();//实现7+8
return 0;}
void func(){add();}//实现5+6
int add(int x,int y{return x+y;}

在给出默认形参时应注意是否会出现歧义:

int add(int x,int y){return x+y;}
int add(int x,int y,int z=2){return x+y+z;}
int main(){
innt ret;
ret=add(10,20);//此时就出现歧义,既有可能调用第一个函数,也有可能调用第二个函数。
return 0;

内联函数

1:c++中的内联函数既有宏定义的优点,又克服了宏定义的缺点。(宏定义不会进行参数检查)
2:在函数名前加上“inline”,即为内联函数。inline void func(int a,int b);
3:在编译时调用func的地方用函数体进行的替换,所以出现执行时会减少调用开销。
注意:1、并非所有的函数都需要定义为内联函数,一般只会将那些频繁使用的,并且函数体较小的(只有几条语句)函数定义为内联函数。2、内联函数不允许又循环语句和switch语句,否则按照普通函数处理。

宏定义: #define 符号常量名 数值
类如:# define PI 3.14
Area=PIrr;——》Area=3.14*r**r
注意:定义符号常量时,不能用赋值符 ,不能以分号结尾。

用define和用const定义符号常量的本质区别:
1、用define定义的符号常量只在编译时完成宏替换(简单的字符串替换),在程序运行期间不占用内存空间。
2、用const定义的符号常量在程序运行时占据内存空间,只是用const来指明该内存空间的只读约束。

最后

以上就是畅快冰棍为你收集整理的重载函数、内联函数的全部内容,希望文章能够帮你解决重载函数、内联函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部