Поведение копирования по умолчанию с массивом объектов

Если у меня есть класс с массивом в качестве члена:

class A
{
Object array[SIZE];
};

И я копирую экземпляр этого:

A a;
A b = a;
A c;
c = a;

будут array быть закадровым Object::operator= копируется поэлементно?

5

Решение

Массивы в C ++ хорошо ведут себя для всех объектов первого класса, включая определяемые пользователем типы (независимо от того, являются ли они POD / нетривиально конструируемыми).

#include <cstdio>

struct Object
{
Object()              { puts("Object");  }
Object(Object const&) { puts("copy");    }
~Object()              { puts("~Object"); }
};

struct A
{
Object array[4];
};

int main()
{
A a;
A b = a;
}

Выход (см. Также http://liveworkspace.org/code/40380f1617699ae6967f0107bf080026):

Object
Object
Object
Object
copy
copy
copy
copy
~Object
~Object
~Object
~Object
~Object
~Object
~Object
~Object
8

Другие решения

Других решений пока нет …