问题代码: class Shape{ public: enum Color{RED,GREEN,BLUE}; virtual void draw(Color color = RED)const = 0; ... }; class Circle:public Shape{ public: virtual void draw(Color color = GREEN)const{ ... } }; class Rectangle:public Shape{ public: virtual void draw(Color color)const{ ... } }; Shape* ps; Shape* pc = new Circle; Shape* pr = new Rectangle; //问题 pc->draw(); //Circle::draw(RED) 修改后: class Shape{ public: enum Color{RED,GREEN,BLUE}; void draw(Color color = RED) const{ ... doDraw(color); ... } ... private: virtual void doDraw(Color color) const = 0; }; class Circle:public Shape{ ... private: virtual void doDraw(Color color){ ... } };