#include class base { public: virtual void virt_func( int ) const { puts( "This is base::virt_func." ); } }; class typo_name : public base { public: virtual void virt_fanc( int ) const { puts( "This is typo_name::virt_fanc." ); } }; class typo_name2 : public base { public: void virt_fanc( int ) const { puts( "This is typo_name::virt_fanc." ); } }; class typo_arg : public base { public: virtual void virt_func( long ) const { puts( "This is typo_arg::virt_func." ); } }; class typo_const : public base { public: virtual void virt_func( int ) { puts( "This is typo_arg::virt_func." ); } }; void call_virt_func( base* p ) { p->virt_func( 0 ); } int main ( int, char** ) { typo_name o1; typo_name2 o2; typo_arg o3; typo_const o4; call_virt_func( &o1 ); call_virt_func( &o2 ); call_virt_func( &o3 ); call_virt_func( &o4 ); return 0; }