C ++: почему const_cast злой?
Я продолжаю слышать это заявление, хотя не могу найти причину, по которой const_cast является злом.
В следующем примере:
<code>template <typename T> void OscillatorToFieldTransformer<T>::setOscillator(const SysOscillatorBase<T> &src) { oscillatorSrc = const_cast<SysOscillatorBase<T>*>(&src); } </code>
Я использую ссылку, и с помощью const я защищаю свою ссылку от изменения. С другой стороны, если я не использую const_cast, код не будет компилироваться. Почему const_cast здесь плохой?
То же самое относится к следующему примеру:
<code>template <typename T> void SysSystemBase<T>::addOscillator(const SysOscillatorBase<T> &src) { bool alreadyThere = 0; for(unsigned long i = 0; i < oscillators.size(); i++) { if(&src == oscillators[i]) { alreadyThere = 1; break; } } if(!alreadyThere) { oscillators.push_back(const_cast<SysOscillatorBase<T>*>(&src)); } } </code>
Пожалуйста, предоставьте мне несколько примеров, в которых я могу видеть, как плохая идея / непрофессионально использовать const_cast.
Спасибо за любые усилия