Я понимаю, что членское назначение массивов не поддерживается, поэтому следующее не будет работать:
int num1[3] = {1,2,3};
int num2[3];
num2 = num1; // "error: invalid array assignment"
Я просто принял это как факт, полагая, что цель языка - предоставить открытую среду и позволить пользователю решить, как реализовать что-то, например, копирование массива.
Тем не менее, следующее работает:
struct myStruct { int num[3]; };
struct myStruct struct1 = {{1,2,3}};
struct myStruct struct2;
struct2 = struct1;
Массив num[3]
struct1
элемента присваивается из его экземпляра в struct1
, в его экземпляр в struct2
.
Почему для массивов поддерживается присвоение массивов по элементам, а не вообще?
редактировать: Роджер Пейт комментарий в ветке std :: string в структуре - Проблемы с копированием/присваиванием? кажется, указывает на общее направление ответа, но я не знаю достаточно, чтобы подтвердить это сам.
редактировать 2: много отличных ответов. Я выбираю Лютера Блиссетта, потому что меня больше всего интересует философское или историческое обоснование поведения, но ссылка Джеймса МакНеллиса на сопутствующую документацию спецификации также была полезна.