C ++: Dlaczego const_cast jest zły?
Ciągle słyszę to stwierdzenie, podczas gdy naprawdę nie mogę znaleźć powodu, dla którego const_cast jest zły.
W następującym przykładzie:
<code>template <typename T> void OscillatorToFieldTransformer<T>::setOscillator(const SysOscillatorBase<T> &src) { oscillatorSrc = const_cast<SysOscillatorBase<T>*>(&src); } </code>
Używam odwołania i używając const, chronię moje odniesienia przed zmianą. Z drugiej strony, jeśli nie użyję const_cast, kod nie zostanie skompilowany. Dlaczego const_cast byłby tutaj zły?
To samo dotyczy następującego przykładu:
<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>
Podaj mi kilka przykładów, w których mogę zobaczyć, jak źle działa / nieprofesjonalnie używać const_cast.
Dziękuję za wszelkie starania :)