C++ erweitern geerbt Funktionen
Berücksichtigung einer einfachen geerbten Klasse:
class Base
{
void func() {
cout << "base" << endl;
}
};
class Derived : public Base
{
void func() {
cout << "derived" << endl;
}
};
wenn ich Abgeleitet::func() bekomme ich
derived
Möchte ich diesen code verändern, um
base
derived
Etwas mehr wie eine Erweiterung als ein Außerkraftsetzen.
Habe ich in der Lage zu bekommen, etwas ähnliches mit Konstruktoren, aber nicht mit normalen Funktionen.
Vielen Dank,
Lucio
- Das gleiche wie hier: stackoverflow.com/questions/357307/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zugriff auf die Basis-Funktion Klasse aus der abgeleiteten Klasse können Sie einfach:
In Ihrem Fall, müssten Sie dies als die erste Zeile der abgeleiteten Implementierung von
func()
.Mit
Base::func();
ist richtig wie ein paar andere schon gesagt.Erinnern, der Konstruktor für die Basisklasse immer zuerst aufgerufen, dann der Konstruktor für die abgeleitete Klasse.
Haben Sie darüber gesprochen Konstruktor einer abgeleiteten Klasse den Konstruktor aufrufen, Basis-Klasse, egal ob Sie einen geerbten Konstruktor, es macht Sinn, weil eine abgeleitete Klasse sollte in der Lage sein zu bauen die Mitglieder von der Basisklasse geerbt. Und per default-Konstruktor würde nicht vererbt werden.
Aber, die "normale" Methode geht das viel anders.
Zuerst bitte sicher, dass in den meisten der Zeit, es ist nicht notwendig, dass eine Methode in der abgeleiteten Klasse aufrufen, die gleichnamige Methode in der Basisklasse, und im Gegenteil, es wird cover Basisklasse, obwohl es Tat-Erben.
Also, wenn Sie wirklich wollen, zu nennen Basisklasse, sollte man sagen complier ausdrücklich. Mit
baseclass::somemethod
erfüllen Ihren Wunsch.this->
Sie Ihre Antwort?Können Sie nicht tun.
Sie haben zu tun, wie