#include <cstdio>
// C++では、main関数の戻り値はint型にしなければならない。
#define main dumny(){} int main
struct base {
virtual void baseMsd() = 0;
};
struct hoge : public base {
void baseMsd() {
puts("hoge");
}
};
struct hage : public base {
void baseMsd() {
puts("hage");
}
void hageta() {
puts("hageta");
}
};
base* base[2];
void main(void)
{
base[0]=new hoge;
base[1]=new hage;
base[0]->baseMsd(); //baseの純粋仮想関数をhogeでオーバーライドされている。
((hage*)base[1])->hageta(); //hageクラスで新規に作ったメソッドを呼び出したい。
}
I2luY2x1ZGUgPGNzdGRpbz4KLy8gQysr44Gn44Gv44CBbWFpbumWouaVsOOBruaIu+OCiuWApOOBr2ludOWei+OBq+OBl+OBquOBkeOCjOOBsOOBquOCieOBquOBhOOAggojZGVmaW5lIG1haW4gZHVtbnkoKXt9IGludCBtYWluCgpzdHJ1Y3QgYmFzZSB7CiAgICB2aXJ0dWFsIHZvaWQgYmFzZU1zZCgpID0gMDsKfTsKCnN0cnVjdCBob2dlIDogcHVibGljIGJhc2UgewogICAgdm9pZCBiYXNlTXNkKCkgewogICAgICAgIHB1dHMoImhvZ2UiKTsKICAgIH0KfTsKCnN0cnVjdCBoYWdlIDogcHVibGljIGJhc2UgewogICAgdm9pZCBiYXNlTXNkKCkgewogICAgICAgIHB1dHMoImhhZ2UiKTsKICAgIH0KICAgIHZvaWQgaGFnZXRhKCkgewogICAgICAgIHB1dHMoImhhZ2V0YSIpOwogICAgfQp9OwoKYmFzZSogYmFzZVsyXTsKCnZvaWQgbWFpbih2b2lkKQp7CiAgICBiYXNlWzBdPW5ldyBob2dlOwogICAgYmFzZVsxXT1uZXcgaGFnZTsKCiAgICBiYXNlWzBdLT5iYXNlTXNkKCk7ICAgIC8vYmFzZeOBrue0lOeyi+S7ruaDs+mWouaVsOOCkmhvZ2Xjgafjgqrjg7zjg5Djg7zjg6njgqTjg4njgZXjgozjgabjgYTjgovjgIIKICAgICgoaGFnZSopYmFzZVsxXSktPmhhZ2V0YSgpOyAgICAgIC8vaGFnZeOCr+ODqeOCueOBp+aWsOimj+OBq+S9nOOBo+OBn+ODoeOCveODg+ODieOCkuWRvOOBs+WHuuOBl+OBn+OBhOOAggp9Cg==