通过引用一个函数传递一个新构造的对象是否合法? [英] Is it legal to pass a newly constructed object by reference to a function?

查看:100
本文介绍了通过引用一个函数传递一个新构造的对象是否合法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

具体而言,是以下法律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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆