摘要: 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 阅读(467) 评论(0) 推荐(1) 编辑
摘要: 1. 在一个继承层次中,不同的类要实现同一接口的不同实现,最先想到的可能是虚函数,假设一个存在一个继承体系,这个集成体系中的每一层都需要一个名为fun函数,那么可能会像这样实现:clase Base{public: ... virtual fun(int num){...}private... 阅读全文
posted @ 2015-09-10 15:20 Reasno 阅读(417) 评论(0) 推荐(0) 编辑
摘要: 1. C++对于函数成员的继承主要有三种: 只继承接口,不继承实现; 同时继承接口和实现,同时允许覆写实现; 继承接口和实现,同时不允许对实现进行覆写.2. 对于public继承,成员函数的接口应该总是被继承(由于is-a关系的存在),其中: pure-virtual函数的目的只是为了使派生... 阅读全文
posted @ 2015-09-09 21:47 Reasno 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 1. C++基类和派生类的作用域为嵌套关系,同时存在作用域屏蔽规则,例如: class Base{ public: void fun(); ... private: int a; ... } class Derived:public Base{ ... } 那么Derived和Base之间的作用域关 阅读全文
posted @ 2015-09-09 21:12 Reasno 阅读(228) 评论(2) 推荐(0) 编辑
摘要: 1. public继承意味着"is-a"(是一个)关系,是接口的完全继承(不一定是接口实现的完全继承).例如B继承自A,如果采用public继承,那么意味着B是A的一种,因此A可以进行的操作B同样也可以进行(尽管实现可能不同).2. public继承的is-a含义(基类可以进行的操作派生类同样可以进... 阅读全文
posted @ 2015-09-09 11:40 Reasno 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 1. inline函数既和带参宏一样不带来函数调用的额外开销,又具有和非inline函数相同的功能,也就是说,inline函数同时具备带参宏和非inline函数的优点. 此外,编译器优化机制通常针对于那些不含参数调用的代码,因此inline某个函数就有可能使编译器对它执行语句相关最优化.2. 虽然... 阅读全文
posted @ 2015-09-01 23:04 Reasno 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 1.当异常被抛出时,"异常安全"函数有两个条件: 不泄露任何资源:从堆中申请的资源应该确保被释放 不允许数据败坏:函数不能对数据修改到一半而抛出异常以致数据被破坏. 解决"不泄露任何资源"很容易,只要使用资源管理类(如shared_ptr,见条款13)即可,"不允许数据败坏"是主要考虑的问题.... 阅读全文
posted @ 2015-09-01 17:25 Reasno 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 1. 所谓的handles指的是引用,指针,迭代器(可能与windows的句柄有所区别),返回一个handles会导致提供给用户对象内部数据的间接访问,这降低了成员变量的封装性,例如:class Demo{public: ... int* getPtr() const { ... 阅读全文
posted @ 2015-09-01 00:33 Reasno 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 1. 转型语法有三种,C风格转型:(T)expression函数风格转型:T(expression)两种方式除了小括号位置不同没有差别,可以称为"旧式转型".C++提供四种新式转型: const_cast(expression): 将const变量引用或指针转为非const引用或指针,移除变量的常... 阅读全文
posted @ 2015-09-01 00:11 Reasno 阅读(311) 评论(0) 推荐(0) 编辑