class CBase {
public:
//virtual int hoge() { return 0; } // ← こっちでも当然動くが、
virtual int hoge()=0; // ← CBaseの hoge が使われる事無いなら、純粋仮想関数にして明示しとけ
// Javaやなんかで言う、いわゆる interface
};
class CSub_A : public CBase {
public:
int hoge() { return 1; }
};
class CSub_B : public CBase {
public:
int hoge() { return 2; }
};
int main()
{
CBase* list[2];
list[0] = new CSub_A();
list[1] = new CSub_B();
printf(
"何のための virtual だよって言う [0]=%d, [1]=%d\n"
, list[0]->hoge() // 1を返したい
, list[1]->hoge() // 2を返したい
);
delete list[0]; delete list[1];
return 0;
}