これがコードです...
#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()
を使って 2 回目にメソッドを呼び出すと、なんとクラスbp
内のメソッドにヒットしました。Derived
クラスでは、Derived
デフォルトの引数を指定しませんでした。しかし、デフォルトの基本クラスの引数を取りました。どのように?