#include //http://wisdom.sakura.ne.jp/programming/cpp/cpp31.html using namespace std; class Kitty { public: virtual void paint() { cout << "Kitty on your lap\n"; } void paint_novirtual() { cout << "Kitty no virtual\n"; } } obj1 ; class Chobits : public Kitty { public: void paint() { cout << "Chobits\n"; } void paint_novirtual() { cout << "Chobits no virtual\n"; } }; class Di_Gi_Gharat : public Chobits { public: void paint() { cout << "Di Gi Gharat\n"; } void paint_novirtual() { cout << "Di_Gi_Gharat no virtual\n"; } } obj3 ; int main() { Chobits obj2; Di_Gi_Gharat obj3a; Kitty *po1 = &obj1 , *po2 = &obj2 , *po3 = &obj3; po1->paint(); po2->paint(); po3->paint(); obj2.paint(); obj3a.paint(); cout << "----------------" << endl; po1->paint_novirtual(); po2->paint_novirtual(); po3->paint_novirtual(); obj2.paint_novirtual(); obj3a.paint_novirtual(); return 0; } ===================================================== $ ./a.exe Kitty on your lap Chobits Di Gi Gharat Chobits Di Gi Gharat ---------------- Kitty no virtual Kitty no virtual Kitty no virtual Chobits no virtual Di_Gi_Gharat no virtual