Deklarieren einer lokalen Variablen innerhalb des Klassenbereichs mit demselben Namen wie ein Klassenattribut

Während ich den Code einer anderen Person beobachtete, wurde mir klar, dass er innerhalb der Methode der Klasse A ein lokales int mit demselben Namen wie ein Attribut der Klasse A deklarierte. Zum Beispiel:

// classA.h

class A{
    int Data;

    void MethodA();
};

// classA.cpp

#include "classA.h"

using namespace std;

void A::MethodA(){
    int Data; //local variable has same name as class attribute

    Data = 4;

    //Rest of Code
}

Ich fand es seltsam, dass der Compiler es akzeptieren würde, ohne einen Fehler zurückzugeben. Wäre im obigen Fall die 4 den lokalen Daten oder A :: Daten zugeordnet, und welche Probleme könnte dies in komplexeren Situationen verursachen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage