编译器可以静默地从 const 转换为 const 和,反之亦然吗?
May the compiler silently convert from const to const& and vice versa?
这背后的想法是,值不会改变,这样我们就不需要关心内存地址了。
当然,也有一些特殊情况,例如(可能只是(多态性,这是不可能的。
const&
如果将对象的值副本替换为const
,则可能不会获取对象的值副本。
如果这有副作用,则不允许编译器进行替换。
在这方面,该规则与返回值优化不同,在返回值优化中,即使存在副作用,也允许删除值副本。