OG super() findes naturligvis ikke i realistiske sprog der har multible arv.
Well...jo, det gør det da, man kan godt kalde superklassens constructor eller implementeringer (det hedder bare ikke 'super()'):
#include <iostream>
using namespace std;
class SuperClass {
public:
SuperClass() {
cout << "SuperClass constructor" << endl;
}
virtual void function() {
cout << "SuperClass function" << endl;
}
};
class SubClass : public SuperClass {
public:
SubClass() {
cout << "SubClass constructor" << endl;
}
virtual void function() {
cout << "SubClass function" << endl;
SuperClass::function();
}
};
int main(int argc, char ** argv) {
SubClass obj;
obj.function();
return 0;
}
Output er:
robert-desktop:~/code $ ./test
SuperClass constructor
SubClass constructor
SubClass function
SuperClass function
robert-desktop:~/code $
Superklassens default constructor kaldes implicit og det kan jeg ikke komme udenom. Jeg kalder så selv superklassens version af 'function()' efter at min SubClass klasse har gjort, hvad den vil.
Indlæg senest redigeret d. 09.06.2008 14:41 af Bruger #2695