このコードの出力は15
です。なぜ私は本当にその理由がわかりません。私はそれがfoo
機能のx=5
を使用すると思うが、私は理由を知らない。誰でも助けてくれますか?デフォルトの引数を持つ仮想関数、奇妙な出力
#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;
}
[仮想関数のデフォルトの引数の動作]の重複が考えられます(http://stackoverflow.com/questions/6464404/virtual-function-default-arguments-behaviour) – cpplearner