通常情况下,函数在调用时,形参从实参那里取得值。对于多次调用同一函数的同一 实参时,C++给出了更简单的处理办法。给形参以默认值,这样就不用从实参那里取值了。 

#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>using namespace std;// c++中 允许给一个形参 默认设置为一个值, 当外部调用函数的时候,如果不传递参数的,那么x就是100
//如果外部传递实参,那么x的值就是实参的值int func1(int x, int = 0)  // 这里的 int = 0 是一个占位符,没有实际意义
{cout << "func1: x = " << x << endl;return 0;
}//求一个 立方体的体积
//默认参数,必须是从右向左设置, 只有有一个参数是带有默认参数 的,那么他右边的所有参数都必须有默认值。
int volume(int len, int width, int high = 30)
{return len * width * high;
}int main(void)
{int x = 10;int v = 0;func1(x);  // 传递一个参数func1(x , v); // 传递两个参数,v 传到 func1函数中没有意义, int = 0 是一个占位符int len = 10;int w = 20;int h = 30;v = volume(len, w, h);  // 传递三个参数cout << "v = " << v << endl;v = volume(len, w); // 传递两个参数cout << "v = " << v << endl;return 0;
}

错误函数写法

  float volume(float length, float weight = 4,float high){  // 错误的函数写法return length*weight*high;}

在默认参数规则,如果默认参数出现,那么右边的都必须有默认参数,例如当 float weight 给予默认值,float high 没有赋值的话,运行就会报错


int func1(int x, int = 0)
{cout << "func1: x = " << x << endl;return 0;
}

函数占位参数
占位参数只有参数类型声明,⽽而没有参数名声明
一般情况下,在函数体内部⽆无法使⽤用占位参数

注:可以将占位参数与默认参数结合起来使⽤

意义

为以后程序的扩展留下线索
兼容C语⾔言程序中可能出现的不规范写法

总结:

默认参数规则 :
只有参数列表后面部分的参数才可以提供默认参数值
一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参 数都必须使用默认参数值 

如果默认参数和占位参数在一起,都能调⽤用起来

C++ 默认参数和占位符相关推荐

  1. 【C++笔记】函数的用法:函数的默认参数、占位参数、函数重载

    函数的默认参数 在C++中,函数的形参列表中的形参是可以有默认值的. 语法:返回值类型 函数名 (参数=默认值){} int func(int a, int b = 20, int c = 30){r ...

  2. C++ 函数默认参数和占位参数

    函数默认值 函数的默认参数从左向右,如果一个参数设置了默认参数,那么这个参数之后的参数都必须设置默认参数. 如果函数声明和函数定义分开写,函数声明和函数定义不能同时设置默认参数. c++在声明函数时, ...

  3. Python——使用“_”下划线作为参数的占位符

    在Python中,函数可以返回多个参数,于是我们可以使用"_"下划线作用不需要使用的多余参数的占位符:

  4. c++中的引用,默认参数,占位参数

    c++中新增了一种复合类型---引用变量,引用是已定义的变量的别名.例如,如果将b作为a变量的引用,则可以交替使用rats和rodents来表示该变量.那么这种别名有什么作用呢?引用变量的主要用途是用 ...

  5. c++学习笔记内联函数,函数重载,默认参数

    c++学习笔记内联函数,函数重载,默认参数 1 inline内联函数 C++中的const常量可以替代宏常数定义,如: const int A = 3;  #define A 3 C++中是否有解决 ...

  6. c语言 结构体 占位符,深入理解结构体中占位符的用法

    深入理解结构体中占位符的用法 复制代码 代码如下: typedef union { struct x{ char a1 : 2; char b1 : 3; char c1 : 3; }x1; char ...

  7. android 多个占位符,Android多语言支持:由于占位符计数不同导致的字符串格式问题...

    我正在制作一个法语Android应用程序,我正在努力支持英语. 我使用"占位符"来格式化我的字符串,因此我可以将它们调整为男性和女性用户.例如,我的s​​trings.xml文件中 ...

  8. Hibernate占位符问题[use named parameters or JPA-style positional parameters instead.]

    hibernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息: [main] WARN [org.hibernate.hql.internal.as ...

  9. mysql jdbc 占位符_JDBC中占位符报错是什么鬼啊

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import java.sql.*; import org.junit.Test; /** * 测试sql注入问题 * @author Wangjiany ...

最新文章

  1. 人工智能的人文主义,如何让AI更有爱
  2. 行业洞察驱动安全防御严峻安全挑战迎刃而解
  3. 土耳其电信与华为签署5G协议谅解备忘录
  4. 打开慢_苹果手机聊天回复特别慢?打开这个开关,1分钟打200字都没问题
  5. JS---Math.Random()*10--[0,10)随机变颜色
  6. pytorch中获取模型参数
  7. 如何使用PHP开发高效的WEB系统
  8. 181222每日一句
  9. 拨号保护,网络电话,保护隐私,匿名通话
  10. wifi数据包解析_WiFi通讯协议详解
  11. DeBank和非小号网站的数据分析-实习工作小结
  12. 什么样的固定资产管理系统才能满足企业需求
  13. STM32 ME909 调试难点
  14. np.isfinite_带有Python示例的math.isfinite()方法
  15. Acrobat Reader XI启动后自动关闭的分析
  16. 如何查看Linux磁盘空间大小
  17. 电子元件在电路的作用
  18. 2020年64种最佳免费WordPress博客主题
  19. 初级计算机硬件试题,初级网络管理员计算机硬件基础知识考试卷模拟考^试题...
  20. Spark资源调度机制源码分析--基于spreadOutApps及非spreadOutApps两种资源调度算法

热门文章

  1. Android开发系列之ListView
  2. 转: C语言中位运算符异或“∧”的作用
  3. readonly时禁用删除键,readonly按删除键后页面后退解决方案
  4. 精品软件 推荐 百度杀毒 软件
  5. 利用PHP的Popen实现RRDTOOL作图的动态输出
  6. Makefile文件的使用
  7. 一个自己写的PHP模板引擎
  8. JS一起学02:函数传参、操作属性第二种方式、提取行间事件、循环、this、焦点问题、联动选择、选项卡焦点图
  9. Android 70道面试题汇总不再愁面试
  10. 最好最坏和平均情况下的性能分析