【发布时间】:2013-08-20 00:25:02
【问题描述】:
我最近遇到了这个问题,但不明白为什么该语言会允许 b = c;低于并且失败 b = {3, 4}。允许后者有问题吗?
struct T {
int x;
int y;
};
int main()
{
T a = {1, 2};
T b;
b = {3, 4}; // why does this fail ?
T c = {3, 4};
b = c; // this works
return 0;
}
【问题讨论】:
-
@alk,这不完全是一个骗局。另一个链接谈论将结构分配给结构,而这个只是关于将初始化程序分配给结构。
-
b = {3, 4};不是初始化,而是赋值。前者是T b = {3, 4};。是的,这两个是不同的野兽...... :-) 初始化发生在定义期间。分配发生在所有其他情况下。 -
所以来回答你的问题标题:因为这是根据定义! ;-)
-
标题与内容略有不同,因此对其进行了更改以匹配详细描述。它现在看起来还像一个 dup 吗?