【发布时间】:2011-11-29 09:50:06
【问题描述】:
内联函数是否需要性能来通过const引用像
foo(const T & a, const T &b)
按价值比较
foo(T a, T b)
如果我不改变函数中 a 和 b 的值? C++11 的变化是否推荐了这里的任何具体内容?
【问题讨论】:
-
值是值,引用是引用。传递一个 const 引用而不是传递一个值是一个错误,可能会严重反击。见stackoverflow.com/questions/4705593/int-vs-const-int/…
-
@6502:这是使用引用使逻辑更加复杂的一个很好的例子(
v.push_back(v[0])是合法的,因为标准库必须包含额外的逻辑)。 -
@BenVoigt:很高兴看到此请求已添加到标准中。哪里写的?
-
@6502:如果在调用
push_back时引用有效,则标准库有责任对其进行正确处理。 -
@BenVoigt:对不起,我不同意。在调用传递引用的函数时,如果被引用的对象在函数的持续时间内没有足够长的时间,这是一个调用者问题(被调用者无法控制它)。 AFAIK 标准并没有说复制操作必须在释放之前完成:如果一个实现想要这样做就可以了,但是一个有效的 C++ 编译器可以让守护进程飞离我的鼻子仍然保持兼容。顺便说一句,现在使用 C++0x 事情变得更加复杂了……重新分配可以使用移动构造函数吗?如果是这样,仅仅延迟销毁旧存储是不够的......
标签: c++ performance c++11 const-reference