Ecco il codice ...Sono in grado di chiamare un metodo senza passare gli argomenti richiesti in C++. Come mai?
#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;
}
Quando il Display()
metodo chiamato seconda volta usando bp
, a sorpresa ha colpito il metodo nella classe di Derived
. nella classe Derived
Non ho specificato l'argomento predefinito. Ma ha preso l'argomento della classe base di default. Come?
Immagino tu intenda la terza volta (l'ultima volta nel tuo codice). – john
Sì. Aggiorna la domanda ora. Grazie. –
Porta indietro i ricordi: http://www.gotw.ca/gotw/005.htm. –