2.auto
上一个条款也有谈到auto,auto看起来很简单,但是还是有些情况需要注意。这里主要讲如何去引导auto得出正确的结果
条款05:优先选用auto,而非显示型别声明
这个条款给出几个理由,让我们优先选择使用auto。下面几个例子可以展示
上面主要讲的是auto的便利,下面一个例子能体现使用auto的更大的好处。
可以看到,大家应该都觉得这里没啥问题。但是map的key是默认const的。也就是这里真实的构造其实是 const std::pait,这里不匹配,要执行编译器强制转换。将所有的key复制一遍。开销巨大。可能有时候你写出这种代码,自己都不知道哪里出了问题。使用auto的话,这里什么问题都不会存在了。
当使用auto推导的型别不符合要求的时候,使用带显式型别的初始化物习惯用法
可以看到,类型是std::_Bit_reference&,这个类型我相信大家应该都没用过。
这个条款说的就是,有的时候还是使用显式声明比较好。但这不是说不用auto,还是建议使用auto,因为这种情况不多。
Last updated
Was this helpful?