Я действительно не понимаю, почему это работает так.Почему это работает так?
#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;
}
Когда я вызвать функцию помаки() это couts ого, как 10, хотя он вызывает вторая функция помаков (не виртуальный) и я четко указан, что де = 2.
Изменение значений по умолчанию в переопределенных виртуальных функций ... пожалуйста, нет :( – Borgleader
не могли бы вы придумать лучшее название? Один начинает думать, это о этом PTR. – user2672165