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?