const_cast
удаляет const
из const
члена a
, что позволяет успешно выполнить присвоение из other.a
(без const_cast
тип a
будет const int
,и, следовательно, это не будет изменяемым).
Вероятно, идея заключается в том, что a
инициализируется при построении класса и не может быть изменен "путем проектирования" в любом другом месте, но автор классарешил сделать исключение для присвоения.
У меня смешанные чувства по отношению к этому коду, очень часто использование const_cast
является признаком плохого дизайна, с другой стороны, это может быть логично разрешитьприсваивать, но сохранять const
для всех других операций.