摘要:
1、令operator= 返回一个reference to *this,为什么? 这只是一个协议,并无强制性。但是,为了与基本类型的行为保持一致性,强烈建议这么做。设计class 有一个宝典:一旦有疑惑,请参考int类型的行为,并遵循之。2、不光operator=,与它类似的赋值相关运算,也应该遵循该协议。 阅读全文
posted @ 2013-12-31 19:40
Andy Niu
阅读(216)
评论(0)
推荐(0)
摘要:
1、接口继承和实现继承表示的意义 接口继承:父类提供的接口,子类仍然提供。 实现继承:子类复用父类的代码实现。2、子类继承父类,可分为下列情况: a、继承接口,继承实现---对应non-virtual方法。 b、继承接口,继承缺省实现,允许子类修改实现---对应virtual方法。 c、只继承接口---对应pure virtual方法,父类只提供接口,强制子类提供实现。 b、关闭接口,继承实现:private继承,表示根据某物实现出,子类关闭接口。3、现在,考虑下面的场景:父类有个virtual方法XXX(),目的是让子类继承缺省实现,允许子类修改。现在有个子类,应该重写XXX,但... 阅读全文
posted @ 2013-12-31 19:20
Andy Niu
阅读(461)
评论(0)
推荐(0)
摘要:
1、首先讲讲作用域,内层作用域的名称会遮掩外层作用域相同的名称。而且遮掩规则是:只看名称,不关心名称的类型。也就是说,内层double类型的x会遮掩外层int类型的x。2、继承有两层含义:从行为和状态看,子类更加具体化;从范围看,父类是大范围,子类是小范围,可以认为子类作用域嵌套在父类作用域中。3、那么问题来了,子类作用域嵌套在父类作用域中,根据上面的遮掩规则,子类名称会遮掩父类的名称,不关心名称的类型。4、这也就意味着,子类不能过载父类的方法,因为会遮掩。如果确实要过载父类的方法,怎么办呢? 使用using Base::XXX。明确告诉编译器,我要继承父类的XXX方法(这个XXX名称对应着. 阅读全文
posted @ 2013-12-31 18:30
Andy Niu
阅读(364)
评论(0)
推荐(0)
浙公网安备 33010602011771号