我正在刷新我对值初始化与默认初始化的理解,并遇到了这个:
struct C {
int x;
int y;
C () { }
};
int main () {
C c = C ();
}
显然这是 UB 因为
在 C() 的情况下,有一个能够初始化 x 和 y 成员的构造函数,因此不会进行初始化。因此,尝试将 C() 复制到 c 会导致未定义的行为。
我想我明白为什么,但我不确定。有人可以详细说明吗?
这是否意味着这也是UB?
int x; x = x;
顺便说一句,关于值初始化,以下是否保证为零?
int x = int ();