摘要: 1. 由条款12知,如果catch子句捕获异常采用按值传递,那么被抛出的异常要被复制两次,这降低了效率,而且将派生类对象传给基类对象有可能会产生切割问题,但是按值传递也有它的好处,在catch子句重新throw异常的时候,它可以选择throw经catch子句处理过的异常还是原来的异常,这增加了灵活性 阅读全文
posted @ 2015-06-26 22:38 Reasno 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 1. 函数return值与try块throw exception、函数接收参数与catch字句捕获异常相当类似(不仅声明形式相像,函数参数与exception传递方式都有三种:by value,by reference ,by pointer(本质上也是by value) )。 2. 尽管函数调用与 阅读全文
posted @ 2015-06-26 21:57 Reasno 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 1. ”两种情况下destructor会被调用。第一种情况是当对象在正常情况下被销毁,也就是当它离开了它的生存空间或是被明确的删除;第二种情况是当对象被exception处理机制——也就是exception传播过程中的stack-unwinding(栈展开)机制——销毁。” 2. 当destruct 阅读全文
posted @ 2015-06-26 20:45 Reasno 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 1. “C++ 只会析构已完成的对象”,“面对未完成的对象,C++ 拒绝调用其析构函数”,因为对于一个尚未构造完成的对象,构造函数不知道对象已经被构造到何种程度,也就无法析构。当然,并非不能采取某种机制使对象的数据成员附带某种指示,“指示constructor进行到何种程度,那么destructor 阅读全文
posted @ 2015-06-26 19:54 Reasno 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 1. “函数抛出异常的时候,将暂停当前函数的执行,开始查找匹配的catch语句。首先检查throw本身是否在try块内部,如果是,检查与该try块相关的catch语句,看是否其中之一与被抛出的对象相匹配。如果找到匹配的catch,就处理异常;如果找不到,就退出当前函数(释放当前函数的内存并撤销局部对 阅读全文
posted @ 2015-06-26 18:10 Reasno 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 1. new operator:new操作符,用于动态分配内存并进行初始化; placement new(定位new):new operator的另外一种用法 ,在已分配的内存上构造对象; operator new:标准库的函数,只分配内存不进行初始化(或者传递一个可用的内存地址),可以自己进行重载 阅读全文
posted @ 2015-06-26 14:25 Reasno 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 1. 内置的&&和||操作符有"短路求值"的特性。对于&&如果第一个操作数为真,那么&&即返回为真,不再对第二个操作数进行求值,||则相反,利用这个特性可以写出下面的代码: char *p; ... if(p>0&&strlen(p)>10) ... 一旦进行重载,&&和||的左右操作数就是两个无分 阅读全文
posted @ 2015-06-26 08:51 Reasno 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 1. 由于前自增和后自增操作符都是一元运算符,因此重载时通过在后自增中加一个int型参数(哑元参数)加以区分,当后自增被调用时,编译器自动在为该参数指定一个0值。 2. 前自增操作符返回调用它的对象的引用,后自增操作符返回const 临时对象 3. 由于前自增是返回的是原对象的引用,因而可以执行类似 阅读全文
posted @ 2015-06-26 08:37 Reasno 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 1. C++ 允许内置数据类型之间(例如char和int,int和double等)进行隐式转换,对于内置类型之间的隐式转换有详细的规则,但不管怎样,这些都是语言提供的,既相对安全,我们又无法更改。 对于自定义的类类型,隐式转换可以通过带单一自变量的构造函数和隐式类型转换操作符来实现(所谓"单一自变量 阅读全文
posted @ 2015-06-26 03:07 Reasno 阅读(399) 评论(1) 推荐(1) 编辑
摘要: 1. 有些类的数据成员的值是必要的,因而在创建时就应该提供其值,其中的一个强制实现的方法就是不提供默认构造函数,如果不这么做的话,在使用对象的时候就要检验那个数据成员是否被正确赋值。 2. 如果为了强制某些数据成员在创建对象时就被赋值而不提供默认构造函数,那么在创建该对象的数组时就会遭遇因为没有默认 阅读全文
posted @ 2015-06-26 02:23 Reasno 阅读(456) 评论(0) 推荐(1) 编辑