Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300142
  • 博文数量: 148
  • 博客积分: 4365
  • 博客等级: 上校
  • 技术积分: 1566
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-05 21:38
文章分类
文章存档

2014年(2)

2013年(45)

2012年(18)

2011年(1)

2009年(54)

2008年(28)

我的朋友

发布时间:2013-01-11 18:52:54

明智审慎使用private继承,通常只在表示“实现”关系时,相当于表现出C++中没有的interface的作用。private继承后,需要在派生类中重声明(redeclare)所需的对外接口(为了实现,using一下或使用::域作用符调用基类版本)。再强调:public继承,表示派生类 is-a 基类,可以替换基类出现的地方(里氏替换)。空白基类最优化: 空的类取sizeof,值是1,但是由其派生的类,这个“垫补”的1可以减掉。 点击(此处)折叠或打开class a{};class b:public a{    int t2;};类a的sizeof是1,......【阅读全文】

阅读(669) | 评论(0) | 转发(0)

发布时间:2013-01-11 18:01:19

组合与实现。前面某个item已经提过public继承是一种“is-a”的关系。组合不用说了,某些场景应用非常多见,“has-a”的关系。实现可以参考STL中的Stack,由deque实现出的,大致就是这么个意思。总之,采用“is-a”关系建模要慎重。......【阅读全文】

阅读(352) | 评论(0) | 转发(0)

发布时间:2013-01-11 17:22:09

虚函数的调用是动态绑定,但是默认参数却是静态绑定的,设计时要考虑到派生类的应用。不要在派生类中修改默认参数了,引入风险和重复代码。CPP Primer里面有讲过这个,还记得。PS:说参数采用动态绑定的话,编译器会增加很多开销,图省事变静态的了。......【阅读全文】

阅读(252) | 评论(0) | 转发(0)

发布时间:2013-01-11 12:14:54

不要在派生类中redefine基类中的非虚函数,埋下风险。非虚函数表派生类和基类对象共性的东西,要想体现差异化请使用虚函数。......【阅读全文】

阅读(327) | 评论(0) | 转发(0)

发布时间:2013-01-11 12:04:43

考虑虚函数意外的其它实现(模式),通常虚函数都是对外接口,借由多态,触发动态绑定。提供了几种其它思路:1.None-Virtual-Interface(NVI),提供统一的非虚函数作为接口,虚函数或private不对外呈现,具体由子类实现。就是设计模式中的template method,设计好对外的主干,枝叶则面对不同场景待定。2.由函数指针实现strategy模式,这个应用就很普遍了,无论是做入参还是类内部成员。还提到了tr1中的function和bind,以后再好好看看。......【阅读全文】

阅读(321) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册