当前位置:  编程技术>c/c++/嵌入式

C++函数参数取默认值的深入详解

    来源: 互联网  发布时间:2014-10-16

    本文导语:  一般情况下,在函数调用时形参从实参那里取得值,因此实参的个数应与形参相同。有时多次调用同一函数时用同样的实参,C++提供简单的处理办法,给形参一个默认值,这样形参就不必一定要从实参取值了。如有一函数声明f...

一般情况下,在函数调用时形参从实参那里取得值,因此实参的个数应与形参相同。有时多次调用同一函数时用同样的实参,C++提供简单的处理办法,给形参一个默认值,这样形参就不必一定要从实参取值了。如有一函数声明
float area(float r=6.5);
指定r的默认值为6.5,如果在调用此函数时,确认r的值为6.5,则可以不必给出实参的值,如
area( );  //相当于area(6.5);
如果不想使形参取此默认值,则通过实参另行给出。如area(7.5); //形参得到的值为7.5,而不是6.5
这种方法比较灵活,可以简化编程,提高运行效率。
如果有多个形参,可以使每个形参有一个默认值,也可以只对一部分形参指定默认值,另一部分形参不指定默认值。如有一个求圆柱体体积的函数,形参h代表圆柱体的高,r为圆柱体半径。函数原型如下:
float volume(float h,float r=12.5);  //只对形参r指定默认值12.5
函数调用可以采用以下形式:
volume(45.6);       //相当于volume(45.6,12.5)
volume(34.2,10.4)   //h的值为34.2,r的值为10.4
实参与形参的结合是从左至右顺序进行的。因此指定默认值的参数必须放在形参表列中的最右端,否则出错。例如:
void f1(float a,int b=0,int c,char d=′a′);     //不正确
void f2(float a,int c,int b=0, char d=′a′);     //正确
如果调用上面的f2函数,可以采取下面的形式:
f2(3.5, 5, 3, ′x′) //形参的值全部从实参得到
f2(3.5, 5, 3)      //最后一个形参的值取默认值′a′
f2(3.5, 5)         //最后两个形参的值取默认值,b=0,d=′a′
可以看到,在调用有默认参数的函数时,实参的个数可以与形参的个数不同,实参未给定的,从形参的默认值得到值。利用这一特性,可以使函数的使用更加灵活。例如例4.7求2个数或3个数中的最大数。也可以不用重载函数,而改用带有默认参数的函数。
例4.8 求2个或3个正整数中的最大数,用带有默认参数的函数实现。

代码如下:

 #include
using namespace std;
int main( )
{int max(int a, int b, int c=0);//函数声明,形参c有默认值
int a,b,c;
 cin>>a>>b>>c;
 cout

    
 
 

您可能感兴趣的文章:

  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 怎么样在C++里调用Fortran函数??????
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • SOS ,在UNIX下编译C++程序时出现链接错误:未下义的符号,但函数库里有这些函数,不知道为什么?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • 求linux C++的时间相关函数及用法,急用,谢谢
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • C++ 函数编程库 FC++
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • C++ 程序中,如何增加c函数?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • C++中虚拟函数表的问题
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • linux下编译c++程序,系统头文件中包含的函数的定义源代码可以查看吗?
  • c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
  • Linux中的共享库难道只能导出函数,而不能导出C++类吗?
  • c++断言assert()函数的头文件及其用法详解
  • 常用C++函数库 Libretta
  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • C++空类默认函数详细解析
  • C++ STL库中priority_queue介绍,成员函数说明及priority_queue具体用法举例
  • 如何在C程序中调用C++中的函数
  • linux c malloc函数定义及用法详解
  • 浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解
  • malloc函数详解及用法举例
  • 请问:setTimeout(p1,p2) 的函数详解,马上给分的。
  • oracle中lpad函数的用法详解
  • fork函数详解?
  • 深入mysql YEAR() MONTH() DAYOFMONTH()日期函数的详解
  • 从汇编看c++的默认析构函数的使用详解
  • 基于C++字符串替换函数的使用详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 内联函数inline与宏定义深入解析
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析
  • SQL SERVER函数之深入表值函数的处理分析
  • 深入探讨:main函数执行完毕后,是否可能会再执行一段代码?
  • 深入解析函数指针与返回函数的指针
  • 基于memset()函数的深入理解
  • C语言typedef与复杂函数声明问题的深入解析
  • strcat函数与strncat函数的深入分析
  • 深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结
  • 深入解析C++中的构造函数和析构函数
  • MySQL中group_concat函数深入理解
  • 基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析
  • 解析VC中创建DLL,导出全局变量,函数和类的深入分析
  • 深入理解atoi()与itoa()函数的用法
  • 深入C++拷贝构造函数的总结详解
  • 一般函数指针和类的成员函数指针深入解析
  • 深入C++ string.find()函数的用法总结
  • 深入理解C语言 static、extern与指针函数
  • c++友元函数与友元类的深入解析
  • 深入mysql创建自定义函数与存储过程的详解
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • cityhash 32位,64位和128位介绍及函数列表
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • PHP的substr() 函数用法
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • linux c下利用srand和rand函数生成随机字符串




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3