PC客户端开发研究者---爱生活,爱code!

摘要: 条款三十九:明智而审慎的使用private继承 1.C++裁定凡是独立(非附属)对象都必须有非零大小。class Empty{};//没有数据,所以其对象应该不使用任何内存class HoldAnInt{ private: int x; Empty e; }//你会发现sizeof(HoldAnInt)>sizeof(int);在大多数编译器中sizeof(Empty)获得1.但是还会有默认的内存对其操作。 2.空白基类最优化class HoldAnInt:private Empty{ private: int x;}... 阅读全文
posted @ 2014-03-05 12:21 xxiaoye 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 条款三十二:确定你的public继承塑模出is-a关系 1.所谓最佳设计,取决于系统希望做什么事,包括现在和未来。 2.好的接口可以防止无效的代码通过编译,因此你应该宁可采取“在编译期拒绝企鹅飞行”的设计,而不是“只在运行期才能侦测它们”的设计。 条款三十三:避免遮掩继承而来的名称 1.C++的名称遮掩规则(name-hiding-rule)所做的唯一事情就是:遮掩名称。至于名称是否应相同或不同的类型,函数名称是否重载了不同的类型并不重要。一个名为x的double可以遮掩一个名为x的int;一个mf1()函数可以遮掩一个mf1(x)函数。 2.derived cl... 阅读全文
posted @ 2014-03-05 10:59 xxiaoye 阅读(292) 评论(0) 推荐(0) 编辑