返回值是一个类名,后跟一对空括号是什么意思?

时间:2019-07-14 07:04:26

标签: c++ class syntax return-value semantics

我想知道函数返回类/结构名后加括号的含义。

例如:

struct X{...}; //structure with static members

X g(){ return X(); }; 

我在以下链接中找到了它: https://en.cppreference.com/w/cpp/language/static#Explanation

1 个答案:

答案 0 :(得分:0)

X() 

调用结构X的默认构造函数。

return X();

表示构造X的临时实例并返回它。更具体地说,这里的临时文件是 pure r-value ,它将被移到调用该函数的 lvalue 上。

那是

auto objectX = g();

通过上述声明,将通过移动从objectX创建的临时项来初始化g()(lvalue)。

在此处查看有关C ++中值类别的更多信息:https://en.cppreference.com/w/cpp/language/value_category