C ++: Warum ist const_cast böse?

Ich höre diese Aussage immer wieder, obwohl ich den Grund, warum const_cast böse ist, nicht wirklich finden kann.

Im folgenden Beispiel:

<code>template <typename T>
void OscillatorToFieldTransformer<T>::setOscillator(const SysOscillatorBase<T> &src)
{
    oscillatorSrc = const_cast<SysOscillatorBase<T>*>(&src);
}
</code>

Ich verwende eine Referenz und durch die Verwendung von const schütze ich meine Referenz vor Änderungen. Wenn ich dagegen const_cast nicht verwende, wird der Code nicht kompiliert. Warum sollte const_cast hier schlecht sein?

Gleiches gilt für folgendes Beispiel:

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

Bitte geben Sie mir einige Beispiele, in denen ich sehen kann, wie schlecht / unprofessionell es ist, einen const_cast zu verwenden.

Vielen Dank für alle Bemühungen :)

Antworten auf die Frage(9)

Ihre Antwort auf die Frage