Ischum
03.02.2017, 12:35
Hallo,
ich lerne seit paar Monaten C++ (C++11).
Nun habe ich eine Frage zum Thema Klassen:
Ich habe eine Klasse "Auto". Daraus erstelle ich 2 Instanzen, dessen Adresse ich einem Zeiger übergebe (z.B: zeiger1 für auto1, zeiger2 für auto2).
Nun rufe ich die Methode "Reifendruck" über die Zeile
auto1->reifendruck(20);
auf
Diese Methode erhöht den Reifendruck um 20% mit der Zeile in der Methode
reifendruck = reifendruck + 20;
Alles funktioniert wunderbar, aber nun zu meiner Frage:
Ändert die Zeile "reifendruck = reifendruck + 20;" den Reifendruck von auto1 oder auto2? Denn ich habe in der Methode "auto::reifendruck" ja nicht explizit angegeben, das der Reifendruck an auto1 oder auto2 verändert werden soll, sondern ich habe NUR angegeben das der reifendruck erhöht werden soll (ohne Angabe der Instanz auto1).
Nun frage ich mich: woher weiß der Compiler, von welchem Auto ich den Reifendrück erhöhen möchte. Meine einzige Idee ist: Der Compiler weiß es von der Anweisung "auto1->reifendruck(20);", hier wird die Methode "reifendruck" ja über die Instanz "auto1" aufgerufen, daher wird auch "reifendruck" von auto1 erhöht, statt von auto2 oder sontigem.
Das heißt für mich: Wenn ich eine Methode über eine bestimmte Instanz aufrufe, in dem Beispiel "auto1", dann werden innerhalb der Methode nur Änderungen der Attribute an auto1 unternommen, und nicht an auto2. Wenn ich theoretisch über die Methode (aufgerufen von auto1) ein Attribut von auto2 ändern will, dann müsste ich aus dieser Methode, eine Methode über auto2 aufrufen wie z.B. auto2->methodenname(...);
Ist das so richtig?
ich hoffe ihr versteht was ich meine... Sonst bitte nachfragen. danke!
ich lerne seit paar Monaten C++ (C++11).
Nun habe ich eine Frage zum Thema Klassen:
Ich habe eine Klasse "Auto". Daraus erstelle ich 2 Instanzen, dessen Adresse ich einem Zeiger übergebe (z.B: zeiger1 für auto1, zeiger2 für auto2).
Nun rufe ich die Methode "Reifendruck" über die Zeile
auto1->reifendruck(20);
auf
Diese Methode erhöht den Reifendruck um 20% mit der Zeile in der Methode
reifendruck = reifendruck + 20;
Alles funktioniert wunderbar, aber nun zu meiner Frage:
Ändert die Zeile "reifendruck = reifendruck + 20;" den Reifendruck von auto1 oder auto2? Denn ich habe in der Methode "auto::reifendruck" ja nicht explizit angegeben, das der Reifendruck an auto1 oder auto2 verändert werden soll, sondern ich habe NUR angegeben das der reifendruck erhöht werden soll (ohne Angabe der Instanz auto1).
Nun frage ich mich: woher weiß der Compiler, von welchem Auto ich den Reifendrück erhöhen möchte. Meine einzige Idee ist: Der Compiler weiß es von der Anweisung "auto1->reifendruck(20);", hier wird die Methode "reifendruck" ja über die Instanz "auto1" aufgerufen, daher wird auch "reifendruck" von auto1 erhöht, statt von auto2 oder sontigem.
Das heißt für mich: Wenn ich eine Methode über eine bestimmte Instanz aufrufe, in dem Beispiel "auto1", dann werden innerhalb der Methode nur Änderungen der Attribute an auto1 unternommen, und nicht an auto2. Wenn ich theoretisch über die Methode (aufgerufen von auto1) ein Attribut von auto2 ändern will, dann müsste ich aus dieser Methode, eine Methode über auto2 aufrufen wie z.B. auto2->methodenname(...);
Ist das so richtig?
ich hoffe ihr versteht was ich meine... Sonst bitte nachfragen. danke!