最近在C++封装redis的时候,遇到个引用形参如何缺省的问题,看了C++ prime木有讲, 百度也没看到类似的情况。不过想起之前看过人家的代码有类似的情况。经过一顿骚操作后,成功了。

不过有个前提条件就是缺省的引用形参必须是要const修饰,也就是说只能读取,不能修改。

例子:

//测试类
class A {public:int a = 3;
};//函数声明
void fun(const int& a,const int& b = 1,const string& c = "2",const A& d = A());//函数定义
void fun(const int& a,const int& b,const string& c,const A& d) {cout << a << " " << b << " " << c << " " << d.a;
}int main() {fun(0);return 0;
}

out:

0 1 2 3

(测试环境:gcc 8.1,vs2015)

函数的前向声明可要可不要,但是缺省值只能在声明或者定义两者中的一处填写,不然会报重复定义的错误。

但是还没有弄清形参缺省值原理是如何实现的。看了汇编的大概情况,是直接将缺省值入栈。大概是编译的时候,会计算出是否存在形参缺省吧。

如有清楚的大佬,麻烦讲解一下~

引用参数如何设缺省值(默认值)(C++)相关推荐

  1. java布尔值默认值是_Java中的布尔值和布尔值的默认值

    Java中boolean(原始)和boolean(原始包装器)的默认值是什么? Boolean(对象)的默认值为null. Boolean(原始)的默认值为false. 请添加官方源链接 任何Obje ...

  2. 函数参数缺省值/默认值

    一.基本概念 缺省值又叫默认值,指函数形参有默认值. 有缺省值的情况下,可以不写实参就调用函数. 例: void fun(int a = 12); 二.全部指定与部分指定 全部指定即形参全部都有默认值 ...

  3. jmeter存储http请求返回参数_Jmeter接口测试之HTTP请求默认值(八)

    原标题:Jmeter接口测试之HTTP请求默认值(八) 不管是在UI级别的自动化测试还是在接口级别的自动化测试中,对公共数据数据的分离都是一种趋势,或者某种程度来说,这是自动化测试中必须要掌握的一种能 ...

  4. java默认值_java 基本数据类型初始值(默认值)

    1.int类型定义的数组,初始化默认是0 2.String类型定义的数组,默认值是null 3.char类型定义的数组,默认值是0对应的字符 4.double类型定义的数组,默认值是0.0 5.flo ...

  5. python xgboost参数_Python中的XGBoost XGBClassifier默认值

    这不是在xgboost中设置参数的方式.您可以将参数网格传递到训练函数中,例如xgboost的train或sklearn的GridSearchCV,也可以使用XGBClassifier的set_par ...

  6. shell 获取值 默认值

    default=0 PAGE_PV=`cat a.log|awk '{print $1}'` PAGE_PV=${PAGE_PV:-${defaut}} 转载于:https://blog.51cto. ...

  7. 【ES6 教程】第一章 新的ES6语法04—如何设置函数参数的默认值

    英文 | https://www.javascripttutorial.net 翻译 | 杨小爱 在本节教程中,我们将学习如何在 ES6 中处理 JavaScript 默认参数. TL;DR func ...

  8. Python中的Optional和带默认值的参数

    文章目录 带默认值的参数 Typing.Optional类 Optional[X]等价于Union[X, None] 带默认值的参数 在Python中的类或者函数中,若参数在声明时附带了它的默认值,则 ...

  9. php中函数的默认值,参数的顺序

    形式参数可以在定义时候给参数赋一个默认值,默认值不能是一个变量,可以是常量,当调用函数时,如果没有参数,函数就会按照默认值处理,如果传递了参数,就按照传递的参数处理 <?phpheader('c ...

  10. ES6函数参数的解构赋值,以及2种设置参数默认值方法的区别

    文章目录 1. 函数参数的解构赋值方式 2. 函数参数解构设置参数默认值 1. 方法1 2. 方法2 3. 总结 1. 函数参数的解构赋值方式 下面代码中,函数add的参数表面上是一个数组,但在传入参 ...

最新文章

  1. 【Qt】QtCreator中自动补全注释
  2. Oracle与JCP执行委员会分享了他们的Java EE策略
  3. APUE读书笔记-12线程控制-04同步属性
  4. C++下简单的socket编程
  5. ci获取当前url链接的分组,控制器,方法
  6. k8s kubesphere启用可插拔组件(安装前、后均可)
  7. Spark源码分析之DAGScheduler以及stage的划分
  8. python股票交易微信提醒_python实现秒杀商品的微信自动提醒功能(代码详解)
  9. RedisTemplate 常用方法、序列化方式、基于 Redis 实现分布式锁
  10. 基于MicroPython实现ESP32+SSD1306的小恐龙游戏
  11. 网易有道java面试题,网易有道研发类笔试题
  12. 关于 用git clone 命令时报错RPC failed; curl 56 Recv failure....’ 的解决办法
  13. Python之禅——个人翻译
  14. hive 创建外部表
  15. Activation
  16. 开源问答社区软件Answer
  17. php代码编辑软件安卓,PHP代码编辑软件|Rapid PHP编辑器 v15.0 最新版
  18. windows下搭建Vue手脚架
  19. unable to read local cache ‘C:\\Users\\admin/gensim-data\\information.json‘ during fallback 解决办法
  20. 5G无线网节能关键技术

热门文章

  1. 多元相关性分析_NAR:宏基因组网络分析工具MetagenoNets
  2. 心率检测仪的设计与实现:stm32视频教程分享
  3. 如何进行容器镜像加速?| 深度揭示阿里云 Serverless Kubernetes(3)
  4. Windows 用 CMD 打开 WAMP5 的MySQL数据库
  5. 一键还原的GHO文件夹打开方法(转载)
  6. AAEGan 简介与代码实战
  7. 小白刷LeeCode(算法篇):4
  8. Tegra Nano上手
  9. Egret Wing常用快捷键
  10. 隐秘的度假地_如何避免花太多钱去度假