构造函数调用是一个prvalue表达式 在C++中可以找到PR值表达式的例子:

构造函数调用是一个prvalue表达式 在C++中可以找到PR值表达式的例子:,c++,constructor,prvalue,C++,Constructor,Prvalue,prvalue 以下表达式是prvalue表达式: 除字符串文字外的文字,如42、true或nullptr 非引用返回类型的函数调用或重载运算符表达式,如str.substr1、2、str1+str2或it++; 这就是像T这样的表达式调用构造函数的地方吗 这类表达式还有其他名称吗?虽然默认构造函数的特殊情况让我有点困惑,但这被认为是一个强制转换表达式,在列表中排名较低: 非引用类型的强制转换表达式,如static_castx、std::string{}或int42; 尽管不转换任何内容的想法

prvalue

以下表达式是prvalue表达式:

除字符串文字外的文字,如42、true或nullptr

非引用返回类型的函数调用或重载运算符表达式,如str.substr1、2、str1+str2或it++;

这就是像T这样的表达式调用构造函数的地方吗


这类表达式还有其他名称吗?

虽然默认构造函数的特殊情况让我有点困惑,但这被认为是一个强制转换表达式,在列表中排名较低:

非引用类型的强制转换表达式,如static_castx、std::string{}或int42;
尽管不转换任何内容的想法很奇怪,但T语法确实包含在表单4中。

尽管默认构造函数的特殊情况让我有点困惑,但这被认为是一个强制转换表达式,在列表中的位置较低:

非引用类型的强制转换表达式,如static_castx、std::string{}或int42;
尽管不转换任何东西的想法很奇怪,但T语法确实包含在形式4中。

它被认为是强制转换,因为初始化器构造函数的参数被称为“初始化器”,对吗?转换为类型T?我找到了另一个提到这个特定表达式的地方:3通过函数强制转换或带括号的表达式列表初始化prvalue临时值。对我来说,将构造函数调用称为cast似乎很奇怪,但如果这是标准引用它的方式,那么就这样吧。@user42768这就是它的要点,是的。好的。因此,我在前面的评论中链接的页面中的直接初始化仍然被认为是强制转换。谢谢大家!@用户42768仅当它正在创建一个临时的,如果内存可用。它被认为是一个强制转换,因为初始化器构造函数的参数被称为“初始化器”,对吗?转换为类型T?我找到了另一个提到这个特定表达式的地方:3通过函数强制转换或带括号的表达式列表初始化prvalue临时值。对我来说,将构造函数调用称为cast似乎很奇怪,但如果这是标准引用它的方式,那么就这样吧。@user42768这就是它的要点,是的。好的。因此,我在前面的评论中链接的页面中的直接初始化仍然被认为是强制转换。谢谢大家!@用户42768仅当它正在创建一个临时的,如果内存可用。