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