说我有一个类:

class A
{
 public:
 A() {}
};

和的函数:

void x(const A & s) {}

和我做的:

x(A());

可能有人请向我解释关于通过引用传递临时对象的规则?在什么样的编译器允许,你需要常量,如果一个隐含的拷贝发生,等等。从玩弄术语,好像你需要这是有意义的常量,但有关于这一切的正式规则?

谢谢!

有帮助吗?

解决方案

有一个正式的规则 - 在C ++标准(部分,如果你有兴趣13.3.3.1.4)指出,暂时只能绑定到一个const参考 - 如果你尝试使用非const引用编译器必须将此作为错误。

其他提示

香草萨特做了很好的工作在这里解释它: http://www.gotw.ca /gotw/081.htm

X()必须要么取const引用到临时A,或x()必须采取的A通过值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top