Оператор присваивания копии не вызывает операторы присваивания копии основных подобъектов
Этот дефект происходит, когда оператор присваивания копии производного класса не вызывает оператор присваивания копии своего базового класса.
Если этот дефект происходит, если вы не инициализируете элементы данных базового класса явным образом в операторе присваивания производного класса, оператор инициализирует члены неявно при помощи конструктора по умолчанию базового класса. Поэтому возможно, что элементы данных базового класса не становятся присвоенными правильные значения.
Если пользователи вашего класса ожидают, что ваш оператор присваивания выполнит полное присвоение между двумя объектами, они могут столкнуться с непреднамеренными последствиями.
Вызовите оператор присваивания копии базового класса от оператора присваивания копии производного класса.
Даже если элементами данных базового класса не является private
, и вы явным образом инициализируете элементы данных базового класса в производном классе, копируют оператор присваивания, заменяют эту явную инициализацию на вызов оператора присваивания копии базового класса. В противном случае определите, почему вы сохраняете явную инициализацию.
Группа: Объектно-ориентированный |
Язык: C++ |
Значение по умолчанию: На для рукописного кода, прочь для сгенерированного кода |
Синтаксис командной строки: MISSING_BASE_ASSIGN_OP_CALL |
Удар: высоко |