#include using namespace std; class Base { public: Base ( void ); virtual ~Base ( void ); virtual int g1 ( int a = 0 ); virtual int g2 ( int a = 0 ); }; Base::Base ( void ) { } Base::~Base ( void ) { } int Base::g1 ( int a ) { return ( a + 1 ); } int Base::g2 ( int a ) { return ( a + 2 ); } class Derived : public Base { public: Derived ( void ); virtual ~Derived ( void ); virtual int g1 ( int a = 0 ); //遵循1 virtual int g2 ( int a ); //遵循2 }; Derived::Derived ( void ) { } Derived::~Derived ( void ) { } int Derived::g1 ( int a ) { return ( a + 11 ); } int Derived::g2 ( int a ) { return ( a + 12 ); } int main ( void ) { int i, j; Derived d; Base &b = d; i = b.g1 ( ); i = d.g1 ( ); j = b.g2 ( ); j = d.g2 ( 0 ); return ( 0 ); }