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 :)

questionAnswers(9)

yourAnswerToTheQuestion