【发布时间】:2012-12-17 16:45:24
【问题描述】:
实施 1:
foo(const Bar x);
实施 2:
foo(const Bar & x);
如果对象不会在函数中更改,你为什么要复制它(实现 1)。
这会被编译器自动优化吗?
总结:即使对象在函数声明中被声明为const,仍然可以通过其他别名&来编辑对象。
如果您是编写库的人并且知道您的函数不这样做,或者对象足够大以证明每次操作的取消引用成本是合理的,那么
foo(const Bar & x); 是要走的路。
第 2 部分:
这会被编译器自动优化吗?
由于我们确定它们并不总是等价的,而且等价的条件也很重要,因此编译器通常很难确保它们,所以几乎可以肯定 否
【问题讨论】:
标签: c++ optimization reference constants alias