Оператор = для классов

Еще со времен С голые массивы не являются копируемыми объектами (кроме небольшого исключения для строковых литералов). Их нельзя присваивать, передавать по значению, инициализировать копированием и т.д.

CВыделить код

1
2
3

int a[10] = { 0 };
int b[10] = a; // Ошибка
b = a; // Ошибка

Однако достаточно завернуть эти массивы в структуры, как все сразу становится копируемым обычными средствами

CВыделить код

1
2
3
4

struct W { int a[10]; };
struct W a = { 0 };
struct W b = a; // Все в порядке
b = a; // Все в порядке

В С++ все точно так же, хоть и механизмы, скрывающиеся за этим, являются формально другими.

В С++ заведен шаблонный класс

std::array

, который и является просто struct-оберткой над голым массивом. Одним из основных его назначений как раз и является превращение массивов в обычные объекты, которые ведут себя (копируются, передаются по значению и т.п) точно так же, как и остальные "простые" типы.

Нет, не будет. Статический член класса хранится особняком. Он не входит в объекты этого класса. При присваивании объектов такого класса статические поля вообще никак в этом не участвуют.