【陷阱代码】c++ 第二篇 c++11新特性及偏冷门语法场景 面对审查代码

很遗憾,原始代码未仔细整理,只留有分享给别人的截图,来源于学习c11时的构想



陷阱点:

1、lamda[i]传值是只读复制,不能改,++无效,要用i+1

2、如果加了mutable之后,是可以改了,但改的是副本

3、如果用了引用,lamda内部会改这个值,而且lamda调用是回调,可能有非顺序的时序(多线程环境)或者复杂的流程顺序,使分析不清楚i的值

建议:lamda捕获外部变量避免写操作,必要时,外部调用也要同步为宜,也就是等着lamda调用结束。



这里就是介绍了多种可调用对象以及如何统一管理,统一转换为std::function



explicit隐式转换声明加上,避免隐式转换



输出一个是6,一个是7,也就是函数默认参数如果不一致,即使声明了虚函数覆盖了,也会使用不同的默认值



名称覆盖,纯函数名,不含参数,重载也无效,在从重继承之下,容易出现,比如id name、deal等不带有具体差异化操作的接口上




声明虚函数导致移动拷贝无效,要避免。但实际中使用的类,基本都需要析构。所以要合理设计,使复制较慢的类避免拷贝。



模板返回类型依赖参数时,是无法定义返回类型的,之前的做法多指向基类或void*,新特性的尾置返回类型解决了这个问题

-> 后面表示返回类型,通过decltype获取,获取的是 引用类型,通过std::remove_refercence去除引用



可以传递数组引用了,注意,函数内获取sizeof(arr)返回指针已经不再绝对成立了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值