class VirtualBase { public : virtual int tick(int n) = 0; }; class VirtualDerived : public VirtualBase { public : int m_counter; public : VirtualDerived() : m_counter(0) {} int tick(int n) { m_counter += n; return m_counter; } };