La sortie de ce code est 15
et je ne sais vraiment pas pourquoi. Je pense qu'il utilise x=5
dans la fonction foo
mais je ne sais pas pourquoi. Quelqu'un peut-il m'aider ?Fonction virtuelle avec argument par défaut, sortie bizarre
#include <iostream>
#include <string>
using namespace std;
struct A
{
virtual int foo(int x = 5)
{
return x*2;
}
};
struct B : public A
{
int foo(int x = 10)
{
return x*3;
}
};
int main(int argc, char** argv)
{
A* a = new B;
cout << a->foo();
return 0;
}
Copie possible de [comportement d'arguments par défaut de la fonction virtuelle] (http://stackoverflow.com/questions/6464404/virtual-function-default-arguments-behaviour) – cpplearner