说我上课了:
class A
{
public:
A() {}
};
和一个功能:
void x(const A & s) {}
我做了:
x(A());
有人可以向我解释有关通过引用传递临时对象的规则吗?就编译器允许的内容而言,在需要const的地方,如果发生隐式副本等等。从游戏中看,你似乎需要有意义的const,但是有关于这一切的正式规则吗?
谢谢!
答案 0 :(得分:9)
有一个正式的规则 - C ++标准(如果你感兴趣,请参见第13.3.3.1.4节)声明临时只能绑定到const引用 - 如果你尝试使用非const引用,编译器必须将此标记为错误。
答案 1 :(得分:8)
Herb Sutter在这里做了很好的解释:http://www.gotw.ca/gotw/081.htm
答案 2 :(得分:1)
x()必须对常量A采用const引用,或者x()必须采用A按值。