unção virtual argumentos padrão comportamento
Eu tenho uma situação estranha sobre o código a seguir. Por favor, ajude-me a esclarecer.
class B
{
public:
B();
virtual void print(int data=10)
{
cout << endl << "B--data=" << data;
}
};
class D:public B
{
public:
D();
void print(int data=20)
{
cout << endl << "D--data=" << data;
}
};
int main()
{
B *bp = new D();
bp->print();
return 0;
}
Quanto à saída que eu esperava
[ D--data=20 ]
Mas na prática é
[ D--data=10 ]
Por favor ajude. Pode parecer óbvio para você, mas não conheço o mecanismo intern