当`a`和`b`都是'X`类时,`a = b()`是什么意思?

时间:2017-10-30 02:45:59

标签: c++ copy-constructor

我正在阅读article on rvalue-references,但我对下面的摘录感到困惑:

X foo();
X x;
// perhaps use x in various ways
x = foo();

这里,X是一些用户定义的类型。

我知道X foo();会调用X的构造函数,我很确定X x;不会。

但是,x = foo();行是什么意思?是否有一个名为?的构造函数? x = foo;会做什么?

尽可能地尝试,我无法找出正确的单词以查找此代码的含义。

1 个答案:

答案 0 :(得分:7)

  

我知道X foo();会调用X的构造函数

不,它不会。它将声明(但不定义)名为foo的函数,该函数不接受任何参数,并返回X。

  

我很确定X x;不会。

是的,如果有的话。通过对您理解的上述更正,您的问题的答案现在应该是明显的,但是:

  

但是,x = foo();行是什么意思?

表示调用函数foo,并将结果存储在x。