标签:动态 pre span 方式 derived col 定义 red 继承
规则:virtual函数系数动态绑定而缺省的参数是静态绑定。
调用一个定义域derived class内的virtual函数的同时使用的可能是base class为它所指定的缺省参数值。
class Shape{ public: enum ShapeColor {red, green, blue}; virtual void draw(ShapeColor color = red) const = 0; }; class Rectangle :public Shape{ public: virtual void draw(ShapeColor color = green) const; };
以上代码 调用:
Shape *pc = new Rectangle;
pc->draw(); //将调用Rectangle的draw但是默认的参数为red
为什么编译器会选择这种方式呢? 如果缺省的参数是动态绑定那就得在运行期去选择合适的默认参数,比目前这样“在编译器决定”更慢且更复杂。
标签:动态 pre span 方式 derived col 定义 red 继承
原文地址:https://www.cnblogs.com/xiongxinxzy/p/13098885.html