Wie schlecht ist es, eine lokale Variable neu zu definieren / zu beschatten?

Während des Upgrades eines Legacy-Projekts auf VS2015 habe ich festgestellt, dass viele Fehler aufgetreten sind, bei denen eine lokale Variable beispielsweise in einer Funktion neu definiert wurde.

void fun()
{
    int count = applesCount();

    cout << "Apples cost= " << count * 1.25;

    for (int bag=0; bag<5;bag++)
    {
        int count = orangesCount(bag);

        cout << "Oranges cost = " << count * 0.75; 
    }
}

Die Fehler- / Warnmeldung des Compilers lautet:

declaration of 'count' hides previous local declaration 

Ich weiß, dass es offensichtlich nicht ratsam ist, den gleichen Namen für die Variable @ zu verwendecount Aber kann der Compiler die Dinge auch wirklich durcheinander bringen, oder gehen sie generell mit dieser Situation zierlich um?

Lohnt es sich, die Variablennamen zu ändern und zu korrigieren, oder ist es unwahrscheinlich, dass sie Schaden anrichten, und ist das Risiko gering oder gering?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage