【问题标题】:What is the meaning of, returning value being a class name followed by a pair of empty parentheses?返回值是一个类名后跟一对空括号是什么意思?
【发布时间】:2019-11-23 07:14:55
【问题描述】:

我想知道函数返回类/结构名称后跟括号意味着什么。

例如:

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

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

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

【问题讨论】:

  • 您的意思是大写X?在这种情况下,它只是通过调用 0 参数构造函数来创建类的匿名实例。
  • 是的,抱歉打错了。我更正了,谢谢。

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


【解决方案1】:
X() 

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

return X();

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

那是

auto objectX = g();

通过上述语句,objectX(lvalue) 将通过移动从g() 创建的临时对象来初始化。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2018-04-26
    • 1970-01-01
    • 2020-09-24
    相关资源
    最近更新 更多