// Abstrakte Klasse oder Interface class Ausgabe { public: virtual void showDate(int year, int month, int day) = 0; }; //Abgeleitete Klasse implementiert die Interface class GerstdDateout : public Ausgabe { public: virtual void showDate(int year, int month, int day) { cout << ""; } }; Hallo gibt es eigentlich eine möglichkeit einen direkten zugriff auf showDate zu verhindern ? so das man immer über das Interface gehen muss? weil ich kann ja schreiben: GerstdDateout ger; ger.showDate(2000,11,11); und das ist ja nicht Sinn und Zweck
Fummel schrieb:
> und das ist ja nicht Sinn und Zweck
Kannst du das näher erläutern?
Warum soll das nicht Sinn und Zweck sein?
Karl heinz Buchegger schrieb: > Fummel schrieb: > > >> und das ist ja nicht Sinn und Zweck > > Kannst du das näher erläutern? > Warum soll das nicht Sinn und Zweck sein? Was ich meine ist: Das Interface zwingt GerstdDateout die Funktion zu implementieren. Zur Compilezeit ist der exakte Datentyp des Objektes bekannt. Auch bei einem forciertem Aufruf über Pointer GerstdDateout ger; ((Ausgabe*)ger)->showDate(2000,11,11); wird diese Funktion aufgerufen. Und zwar in allen Fällen (weil ja der exakte Datentyp des Objektes feststeht) Was bringt also ein Aufruf über die virtuelle Funktion, was ein direkter Aufruf nicht bringt (ausser längerer Laufzeit)?
So hab ich es nocht nicht gesehen also wäre es nicht unbedingt falsch es direkt aufzurufen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.