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

2014年(2)

2013年(45)

2012年(18)

2011年(1)

2009年(54)

2008年(28)

我的朋友

发布时间:2013-01-12 19:54:54

学习下C++0x中有了啥新东东,第一步先把环境搞定,mingw4.6,貌似还不是正式支持,但已经凑合用了。要使用C++0x中的特性,需要在makefile中加入 -std=c++0x ,据说写-std=c++11也行,没试。实验小程序就写g++ test.cpp -std=c++0x -o testVS2010倒是可以直接通过tr1来体验下shared_ptr等东东了。......【阅读全文】

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

发布时间:2013-01-11 21:16:59

多重继承的使用要小心,可能涉及到virtual base和virtual继承,如果virtual base中不含有任何的数据成员,可以省去初始化等很多易错的工作(virtual base要由最终派生类直接初始化)。有用的场景是:public继承一个interface class,private继承一个辅助实现的class,结合使用。......【阅读全文】

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

发布时间: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,......【阅读全文】

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

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

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

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

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

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

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

登录 注册