2013年6月5日
摘要: (1)显示接口和运行期多态在一般的类的实现和使用中,对象的类型是明确的,调用的函数也是在源代码中明确声明的,如果是virtual函数,具体要调用的哪个类的函数会在运行时决定,即运行期多态,如下代码: 1 class Widget{ 2 public: 3 Widget(); 4 virtual ~Widget(); 5 virtual size_t size() const; 6 virtual void normalize(); 7 void swap(Widget& other); 8 ... 9 };10 11 12 void doProcessing(Widget& w 阅读全文
posted @ 2013-06-05 22:37 Sophia-呵呵小猪 阅读(959) 评论(0) 推荐(0) 编辑
摘要: C++中,所谓的多继承是指一个派生类可以有多个基类,这样就可能带来以下几方面的问题:(1)多个基类中存在相同名称时如果一个派生类继承的多个基类中包含有相同名称的函数时,有可能会产生调用不明确,即发生歧义,比如如下代码: 1 class BorrowableItem 2 { 3 public: 4 void checkOut(); 5 }; 6 7 class ElectronicGadget 8 { 9 public:10 bool checkOut() const;11 };12 13 class MP3Player : public BorrowableItem, public Elec. 阅读全文
posted @ 2013-06-05 21:08 Sophia-呵呵小猪 阅读(280) 评论(0) 推荐(0) 编辑
摘要: C++中派生类从基类继承之后,non-virtual函数不应被重新定义,因为它会导致派生类对象的行为不一致性,也违背了public的"is a"继承关系。除了non-virtual函数不该被派生类重新定义外,基类virtual函数中的缺省参数值也不应该被派生类重新定义,其主要原因是virtual函数是动态绑定,而缺省参数值却是静态绑定。(1)对象的动态类型和静态类型对一个对象,其静态类型指其被声明时的类型,其动态类型则是指其所指的具体对象的类型。例如下面的继承体系: 1 class Shape 2 { 3 public: 4 enum ShapeColor { Green, 阅读全文
posted @ 2013-06-05 11:32 Sophia-呵呵小猪 阅读(510) 评论(0) 推荐(0) 编辑