具体来说,以下是合法的C++吗?

A级{};

无效foo(A *);
空格(const A&);

int main(无效)
{
foo(&A());//1
bar(A());//2
}

它似乎可以正常工作,但这并不意味着它一定合法。是吗?

编辑-将A&更改为const A&

最佳答案

1:不允许使用临时地址。 Visual C++允许它作为语言扩展(默认情况下,语言扩展处于启用状态)。

2:这是完全合法的。

关于c++ - 通过引用函数传递新构造的对象是否合法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/84427/

10-10 12:42