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