Vererbung und nicht überschriebene Methoden
-
Hallo,
Folgendes Szenario:
#include <iostream> class basis{ int n; public: basis():n(1){} int getn(){return n;} }; class ableitung:public basis{ int n; public: ableitung():n(2){} }; int main(){ ableitung a; std::cout<<a.getn(); std::cin.get(); return 0; }Dieses Programm gibt 1 aus. Nun möchte ich aber, dass a.getn() mir das n aus der abgeleiteten Klasse zurückgibt, ohne dazu die Funktion überschreiben zu müssen (da es in meinem Fall mehrere sein können die in mehreren abgeleiteten Klassen die alle diese Attribute besitzen immer genau das gleiche machen)
Copy Paste ist eine Lösung, aber ich frage mich ob es nicht eleganter geht (um z.B zu bewirken, dass, wenn die Methode anders arbeiten soll, ich das nur an einer Stelle ändern muss)Vielen Dank im voraus.
-
Was für einen Sinn hat es denn, zwei Member mit dem selben Namen mitzuführen? Wenn du den Wert aus der Basisklasse nicht mehr benötigst, kannst du ihn auch wiederverwenden.
(btw: basis::getn() weiß nichts von möglichen abgeleiteten Klassen - das kennt nur das eigene 'n', das es nutzen könnte)
-
class Base { protected: int n; Base(int n) : n(n) {} public: Base() : n(1) {} int getn () const { return n }; }; class Derived : public Base { public: Derived() : Base(2) {} }; ... Base b; b.getn(); // 1 Derived d; d.getn(); // 2MfG SideWinder