上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
摘要: Templates生成多个classes和多个函数,所以任何template代码都不该与某个造成膨胀的template参数产生相依关系。 因非类型模板参数(non-type template parameters)而造成的代码膨胀,往往可消除,做法是以函数参数或class成员变量替换template 阅读全文
posted @ 2015-03-22 22:27 智者无惧 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 声明template参数时,前缀关键字class和typename可互换。 请使用关键字typename标识嵌套从属类型名称;但不得在base class lists(基类列)或member initialization list(成员初值列)内以它作为base class修饰符。 阅读全文
posted @ 2015-03-22 15:49 智者无惧 阅读(107) 评论(0) 推荐(0) 编辑
摘要: classes和templates都支持接口(interface)和多态(polymorphism)。 对classes而言接口是显式的(explicit),以函数签名为中心。多态则是通过virtual函数发生于运行期。 对template参数而言,接口是隐式的(implicit),奠基于有效表达式 阅读全文
posted @ 2015-03-21 22:01 智者无惧 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 多重继承比单一继承复杂。它可能导致新的歧义性,以及对virtual继承的需要。 virtual继承会增加大小、速度、初始化(及赋值)复杂度等等成本。如果virtual base classes不带任何数据,将是最具实用价值的情况。 多重继承的确有正当用途。其中一个情节涉及“public继承某个Int 阅读全文
posted @ 2015-03-21 21:51 智者无惧 阅读(106) 评论(0) 推荐(0) 编辑
摘要: Private继承意味is-implemented-in-terms of(根据某物实现出)。它通常比复合(composition)的级别低。但是当derived class需要访问protected base class的成员,或需要重新定义继承而来的virtual函数时,这么设计是合理的。 和复 阅读全文
posted @ 2015-03-21 21:43 智者无惧 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 复合(composition)的意义和public继承完全不同。 在应用域(application domain),复合意味has-a(有一个)。在实现域(implementation domain),复合意味is-implemented-in-terms-of(根据某物实现出)。 阅读全文
posted @ 2015-03-20 22:21 智者无惧 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 绝对不要重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定,而virtual函数 你唯一应该覆写的东西 却是动态绑定。 阅读全文
posted @ 2015-03-20 22:18 智者无惧 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 绝对不要重新定义继承而来的non-virtual函数。 阅读全文
posted @ 2015-03-20 22:14 智者无惧 阅读(68) 评论(0) 推荐(0) 编辑
摘要: virtual函数的替代方案包括NVI手法及Strategy设计模式的多种手法。NVI手法自身是一个特殊形式的Template Method设计模式。 将机能从成员函数移到class外部函数,带来的一个缺点是,非成员函数无法访问class的non-public成员。 tr1::function对象的 阅读全文
posted @ 2015-03-20 11:49 智者无惧 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 接口继承和实现继承不同。在public继承之下,derived classes总是继承base class的接口。 pure virtual函数只具体指定接口继承。 简朴的(非纯)impure virtual函数具体指定接口继承及缺省实现继承。 non-virtual函数具体指定接口继承以及强制性实 阅读全文
posted @ 2015-03-19 19:04 智者无惧 阅读(109) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 10 下一页