c++ - C++ 标准:是否有结果对象?
问题描述
int foo() { return 0; }
int x = foo() + 1;
这表示foo()
函数调用表达式没有结果对象:
用于计算内置运算符的操作数的值的非丢弃纯右值或类型为 cv void 的纯右值没有结果对象
我是这样读的:(一个未丢弃的纯右值,用于计算内置运算符的操作数的值)或(一个 cv void 类型的纯右值)没有结果对象。第一个案例是我们的。
另一方面,这谈到了函数调用的结果对象:
return 语句通过操作数的复制初始化来初始化(显式或隐式)函数调用的泛左值结果或纯右值结果对象
我是这样读的:return 语句通过操作数的复制初始化来初始化 ... 函数调用的 (glvalue result) 或 (prvalue result object)。第二种情况是我们的。
那么到底return 0;
初始化什么呢?也许,这意味着从这里开始的临时正在初始化?
解决方案
我相信这是一个缺陷。修正可以如下:
return 语句通过操作数的复制初始化来初始化(显式或隐式)函数调用的泛左值结果或纯右值结果
prvalue 函数调用不能有结果对象。如果返回类型不是cv,它总是有结果。 void
推荐阅读
- python - Python反射:如何从内部获取方法的特定实例的ID?
- android - java.lang.NullPointerException:尝试在空对象引用上调用接口方法“void android.database.Cursor.close()”
- c - 在 C 中实现 malloc() 时,每个块上的页脚的目的是什么?
- powerbi - 尝试使用 Dax 将当前销售额与 MTD 销售额进行比较
- python - 在字符串中嵌入值时,Python 中的 %s 和 % 有什么区别?
- swift - 如何从组合的 iOS/Watch Xcode 项目中仅将独立的 Apple Watch 应用程序发布到 App Store
- reactjs - 带有 Firebase 托管的 Github CI 上 React 应用程序的绝对路径
- python - Dnspython 无法解决任何问题
- python - 使用open cv在python中画一个圆圈但不了解机制
- time-complexity - 两个数字相乘的时间复杂度