摘要: 1. public继承表明is-a的关系,要求接口的完全继承,而private继承表明"根据某物实现出的关系",要求仅仅继承实现,private继承有两个规则: 1). 经由private继承而来的基类的所有成员在派生类中都会变成private属性 2). 由于1),编译器不允许将派生类转为基类... 阅读全文
posted @ 2015-09-10 22:48 Reasno 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 1. public继承体现is-a关系,要求接口的完全继承,而复合体现has-a或"根据某物实现出"的关系. 当复合发生在应用域(世界中的某些事物,如人,汽车,一张剪辑视频画面等)内的对象之间,表现出has-a关系,当发生在实现域(细节上的人工制品,如缓冲区,互斥器,查找树等)内,表现出is-im... 阅读全文
posted @ 2015-09-10 21:38 Reasno 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 1. 重定义一个继承而来的non-virtual函数是应该避免的(见条款34,36),因此主要讨论为什么不重定义virtual函数的缺省参数值.2. virtual函数的特点在于动态绑定,也就是运行时确定调用的函数实体,但令人惊讶的是,无论函数是否virtual,其缺省参数都是静态绑定的,例如:cl... 阅读全文
posted @ 2015-09-10 21:02 Reasno 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 1. public继承意味着is-a关系,即派生类是基类的一种,任何基类可以进行的操作派生类也应该可以进行,如果派生类对于某个函数的实现与基类不同,那么就应当这个函数设为virtual,如果基类中的某个函数是non-virtual的,那么也应该意味着派生类应该继承这个函数的实现,而不应该重定义它.2... 阅读全文
posted @ 2015-09-10 20:23 Reasno 阅读(224) 评论(0) 推荐(0) 编辑
摘要: (参考自http://www.cnblogs.com/jerry19880126/p/3551836.html)1. 与java语言不同,对于C++,在创建类的对象时,编译器必须要在编译期间看到类定义,以确定要分配的内存大小,因此要定义一个类对象,文件常常要include包含类定义的头文件,这就引发... 阅读全文
posted @ 2015-09-10 17:29 Reasno 阅读(468) 评论(0) 推荐(1) 编辑
摘要: 1. 在一个继承层次中,不同的类要实现同一接口的不同实现,最先想到的可能是虚函数,假设一个存在一个继承体系,这个集成体系中的每一层都需要一个名为fun函数,那么可能会像这样实现:clase Base{public: ... virtual fun(int num){...}private... 阅读全文
posted @ 2015-09-10 15:20 Reasno 阅读(419) 评论(0) 推荐(0) 编辑