当“a”和“b”都属于“X”类时,“a = b()”是什么意思?

What does `a = b()` mean when both `a` and `b` are of class `X`?

本文关键字:是什么 意思 属于 类时      更新时间:2023-10-16

我正在阅读一篇关于右值引用的文章,但我对以下摘录感到困惑:

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

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

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

但是,这条线x = foo();是什么意思?有没有调用构造函数?x = foo;会怎么做?

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

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

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

我很确定X x;不会。

是的,

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

但是,这条线x = foo();是什么意思?

这意味着调用函数 foo,并将结果存储在 x 中。