Вот код...
#include "stdafx.h"
#include<iostream>
using namespace std;
class Base
{
public:
virtual void Display(bool b = false)
{
cout<<"Base"<<"\t"<<b<<endl;
}
};
class Derived : public Base
{
public:
virtual void Display(bool b) override
{
cout<<"Derived"<<"\t"<<b<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Base* bp = new Base();
Derived* dp = new Derived();
bp->Display();
dp->Display(true);
bp = new Derived();
bp->Display();
cout<<"Done"<<endl;
return 0;
}
Когда метод Display()
второй раз использует bp
, он неожиданно попадает в метод в классе Derived
. в классе Derived
я не указал аргумент по умолчанию. Но он принял аргумент базового класса по умолчанию. Как?