本文小编为大家详细介绍“c++函数与重载知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++函数与重载知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。函数的默认(缺省)参数1、默认参数的定
本文小编为大家详细介绍“c++函数与重载知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++函数与重载知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
c++在声明函数原型的时可为一个或者多个参数指定默认(缺省)的参数值,当函数调用的时候如果没有传递该参数值,编译器会自动用默认值代替。
//函数的默认参数 指定x的默认值为10 y为20int my_add(int x=10,int y=20){ return x+y;}void test02(){ //如果函数传参 那么各自的默认参数将无效 cout<<"my_add = "<<my_add(100,200)<<endl;//300 //如果某个参数未被传参 将启用默认值x=100 y使用默认值20 cout<<"my_add = "<<my_add(100)<<endl;//120 //x=10 y=20 cout<<"my_add = "<<my_add()<<endl;//30}
(1)、函数的默认参数从左向右,如果一个参数设置了默认参数,那么这个参数之后的参数都必须设置默认参数
//函数的默认参数从左向右int func01(int x,int y=20,int z=30){ return x+y+z;}void test03(){ cout<<func01(100,200)<<endl;//330 cout<<func01(100)<<endl;//150 //cout<<func01()<<endl;//err x没有设置默认参数 必须传参}
int fun(int a, int b, int c=10);//正確int fun(int a, int b=20, int c=10);//正確int fun(int a=30, int b=20, int c=10);//正確int fun(int a, int b=20, int c);//不正确
(2)、如果函数声明和函数定义分开写,函数声明和函数定义不能同时设置默认参数
(3)、默认参数一般在函数声明的时候 设置
fun.cpp
int func02(int x,int y,int z){ return x+y+z;}
main.cpp
//分文件 函数定义处的默认参数 是无效的//建议:分文件是 在声明 给默认参数extern int func02(int x,int y=25,int z=35);//extern int func02(int x,int y,int z);//errvoid test04(){ cout<<func02(100,200)<<endl;//335 cout<<func02(100)<<endl;//160}
c++在声明函数时,可以设置占位参数。
占位参数只有参数类型声明,而没有参数名声明。
如果函数的参数只有类型名 没有形参名,这个参数就是占位参数
注意:
由于有类型名 所以 函数调用的时候 必须给占位参数传参。
由于没有形参名 所以 函数内部 是无法使用占位参数。
void func03(int x,int y,int){ cout<<"x = "<<x<<", y = "<<y<<endl; return;}void test05(){ //func03(10,30,"hehe");//err "hehe"和int类型不符 func03(10,30,40);}
void TestFunc01(int a,int b,int=100){ //函数内部无法使用占位参数 cout << "a + b = " << a + b << endl; }TestFunc01(10, 20,30);//okTestFunc01(10, 20);//ok
什么时候用,在后面我们要讲的操作符重载的后置++要用到这个
函数重载体现了 c++ 的多态的特性
函数重载:同一个函数名在不同场景下可以具有不同的含义。
函数重载意义:方便的使用函数名。
函数重载的条件: 同一个作用域 参数个数不同 参数类型不同 参数顺序不同(重要)
void myFunc(int a){ cout<<"int的myFunc"<<endl;}void myFunc(int a,int b){ cout<<"int,int 的myFunc"<<endl;}void myFunc(int a,double b){ cout<<"int , double的myFunc"<<endl;}void myFunc(double a,int b){ cout<<"double,int的myFunc"<<endl;}void test06(){ myFunc(10);//int myFunc(10,20);//int int myFunc(10,20.2);//int double myFunc(10.1,20);//double int}
注意:
函数的返回值类型 不能作为 函数重载的依据。
函数重载和默认参数一起使用,需要额外注意二义性问题的产生
void myFunc02(int a){ cout<<"int的myFunc02"<<endl;}void myFunc02(int a,int b=10)//默认参数{ cout<<"int,int 的myFunc02"<<endl;}void test07(){ //myFunc02(int a) 和 myFunc02(int a,int b=10)都能识别 myFunc02(10);//二义性产生}
函数重载的原理(了解)
读到这里,这篇“C++函数与重载知识点有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。
--结束END--
本文标题: C++函数与重载知识点有哪些
本文链接: https://www.lsjlt.com/news/330724.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0