我想知道函数返回类/结构名后加括号的含义。
例如:
struct X{...}; //structure with static members
X g(){ return X(); };
我在以下链接中找到了它: https://en.cppreference.com/w/cpp/language/static#Explanation
答案 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