Ich verstehe wirklich nicht, warum das so funktioniert.Warum funktioniert das so?
#include<iostream>
using namespace std;
class Figura{
public:
int x;
int y;
virtual void pomak(int dx=10,int dy=1)
{
x+=dx;
y+=dy;
cout<<"Figura"<<endl;
}
};
class Skakac:public Figura{
public:
void pomak(int dx=2,int dy=-1)
{
cout<<dx<<endl;
x+=dx;
y+=dy;
cout<<"Skakac"<<endl;
}
};
int main()
{
Skakac S;
S.x=0;
S.y=0;
Figura* x=&S;
cout<<x->x<<" "<<x->y<<endl;
x->pomak();
cout<<S.x<<" "<<S.y<<endl;
}
Wenn i Funktion Pomak() aufrufen, es Couts dx als 10, obwohl es zweite Funktion Pomak nennt (nicht die virtuellen) und ich klar gesagt, dass dx = 2.
Ändern der Standardwerte in überschriebenen virtuellen Funktionen ... bitte nicht :( – Borgleader
Kannst du nicht mit einem besseren Titel kommen? Man fängt an zu denken, dass es um das ist this ptr. – user2672165