Я бы предложил (и в отсутствие полного кода я предполагаю, что в Record :: Record () вы делаете ++ total_number), что проблема здесь
vector vr (vec_length);
, который инициализирует std :: vector с записью vec_length.
std :: vector требует, чтобы его типы были копируемыми, то есть вы должны реализовать Record :: Record (const Record &).Вот что происходит: так как std :: vector не имеет Record (), он создает его, создавая его (вызывается Record :: Record (), что увеличивает общее количество до 6).Затем остальные записи vec_length-1 копируются путем вызова Record :: Record (const Record &) с только что созданным экземпляром.
Поскольку вы не указали copy-ctor, компилятор создал для вас такую, котораяпросто делает побитовую копию объекта.Поскольку vec_length является статическим для класса, ничего копировать не нужно - но также и потому, что copy-ctor не увеличивает статическое, ничего не происходит (т. Е. Значение просто сохраняется).
Таким образом, вывод для них6.