通过引用一个函数传递一个新构造的对象是否合法? [英] Is it legal to pass a newly constructed object by reference to a function?
本文介绍了通过引用一个函数传递一个新构造的对象是否合法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
具体而言,是以下法律C ++?
Specifically, is the following legal C++?
class A{};
void foo(A*);
void bar(const A&);
int main(void)
{
foo(&A()); // 1
bar(A()); // 2
}
它似乎工作正常,但这并不意味着它必然是合法的。是吗?
It appears to work correctly, but that doesn't mean it's necessarily legal. Is it?
编辑 - 更改 A&
到 const A& / code>
推荐答案
1:不允许使用临时地址。 Visual C ++允许它作为一个语言扩展(默认语言扩展)。
1: Taking the address of a temporary is not allowed. Visual C++ allows it as a language extension (language extensions are on by default).
2:这是完全合法的。
2: This is perfectly legal.
这篇关于通过引用一个函数传递一个新构造的对象是否合法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文