c++ - 临时对象混淆

标签 c++ temporary

看看这段代码

struct S{ int i; int j;};

int main()
{
   assert(S().i ==  S().j) // is it guaranteed ?
}

为什么?

最佳答案

is it guaranteed ?

是的,这是有保证的。 S().iS().j 的值将为 0() 表示 value initialization. (这意味着 ij 将被零初始化,因为 S 是一个没有用户定义的默认构造函数的类)

关于c++ - 临时对象混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4378785/

相关文章:

C++比较 vector ,更快的方法

c++ - 整数常量上的错误后缀 Ui64 无效

c++ - 成员函数声明的参数列表后的单个&符号是什么意思?

c++ - 临时数据成员的生命周期延长和API设计

c++11 - 为什么对于这个未命名的临时构造函数被省略,具有正常初始化的副作用而不是括号列表初始化?

c++ - OpenCV c++ Mat MADNESS

c++ - 奇怪的重复模板 - 变体

C:避免频繁类型转换的高性能临时变量

可以将临时指针数组传递给 C 中的函数吗?

emacs - emacs 中的临时键绑定(bind)