主要思路: 通过非静态虚函数包裹静态函数将基类的静态函数私有化,迫使派生类必须重写静态函数。 class Base { static void foo() { std::cout << "Base: " << count << endl; } protected: static int count; public: Base() { count = 1; } virtual void bar() { foo(); } }; int Base::count; class Derived : public Base { static void foo() { std::cout << "Derived: " << count << endl; } public: Derived() { count = 2; } virtual void bar() { foo(); } }; 测试代码: Base* obj = new Derived; obj->bar(); delete obj; //Derived: 2