Robin Chow's C++ Blog

 

[导入]More Exceptional C++ 之 13

设计方法:

低耦合有利于程序的正确性(包括异常安全),而高耦合则减降低了程序最大可能的正确性。

继承通常被滥用,甚至一些经验丰富的开发人员也是如此。尽量降低耦合。如果类的关系能够用多种方式表达,那么选用关系最弱的方式。特别是,只有在代理不够用的时候才使用继承。

文章来源:http://my.donews.com/robinchow/2007/02/03/veyjfchfekvqisvephpmjlwafvknmahifgrl/

posted @ 2007-10-23 20:47 Robin Chow 阅读(67) | 评论 (0)编辑 收藏

[导入]More Exceptional C++ 之 12

关于临时对象:临时对象在包含它的创建点的全部表达式的最后一步被销毁。甚至在全部表达式抛出异常时也是如此。

编码标准:不要在同一表达式中编写分配资源而且可能抛出异常的代码。即使分配的资源会立即被管理(例如传递给 auto_ptr 的构造函数)。
更简单的方法是:对每个单独的资源分配,都放在单独的代码片断里,而不是将几个资源分配放在同一个表达式中。然后再将分配的资源传递给管理对象(auto_ptr)进行管理。

文章来源:http://my.donews.com/robinchow/2007/01/30/pvtqocosqslbdxledtwmymsmgcfifqavmula/

posted @ 2007-10-23 20:47 Robin Chow 阅读(68) | 评论 (0)编辑 收藏

[导入]More Exceptional C++ 之 11

关于参数表达式求值:
  1. 在函数调用之前,函数的所有参数都必须完成求值。这包括了参数表达式求值的所有副作用。
  2. 一旦函数开始执行,则调用函数的所有表达式要等到被调函数执行完成之后才开始或继续求值。函数的执行不会相互间接。
  3. 函数的参数表达式求值的顺序不定,可能互相间接。
f(new T1, new T2) 可能导致一个经典的内存泄漏问题。加入 new T1 先执行,new T2 后执行,则一旦 new T2 的过程抛出异常,T1 的内存将被泄漏。

文章来源:http://my.donews.com/robinchow/2007/01/29/vcdrqtzdfdhbnkjyqgipqoiapasnrtvmwydm/

posted @ 2007-10-23 20:47 Robin Chow 阅读(101) | 评论 (0)编辑 收藏

[导入]More Exceptional C++ 之 10

标准 uncaught_exception() 函数提供了对是否还有活动异常的判断。非常值得注意的是,它不表明是否可以安全地抛出异常。
指导原则:
  • 千万不要从析构函数内抛出异常。原因是如果当存在另一个活动异常,而析构函数又抛出一个异常时(堆栈展开时),程序将被终止。写析构函数时加上空的异常规格,因为异常规格将带来额外的代价,因此可以将它写成注释的形式。
  • 如果析构函数调用一个可能抛出异常的函数,一定要将它包含在一个 try/catch 块内以防止异常传出。
最后一点,uncaught_exception() 没有安全的用途,因此建议不要使用。

文章来源:http://my.donews.com/robinchow/2007/01/29/jxfinmwnxhfofnvifzmrkqjgteyknbfxzlfn/

posted @ 2007-10-23 20:47 Robin Chow 阅读(75) | 评论 (0)编辑 收藏

[导入]More Exceptional C++ 之 9

关于函数体 try 的几个要点:
  1. 构造函数 try 只能用来传递从基类或成员子对象的构造函数抛出的对象(或者做一些响应这些错误的其它操作),不能用作其它用途(比如释放资源)。
  2. 析构函数 try 没有什么实际用途,因为析构函数不应该抛出异常。
  3. 所有其它的函数 try 没有什么实际用途。一个一般的函数 try 不能抓取到函数体内的 try 所不能抓取到的异常。
  4. 记住在构造函数体内而不是在初始化列表中分配未被管理的资源(比如使用 new)。即,要么使用“获取资源就是初始化”,从而避免未被管理的资源,要么在构造函数体内获取资源。
  5. 总是在构造函数或析构函数体内释放未被管理的资源,而不是在它们的函数 try 里面。
  6. 如果一个构造函数有异常规格,那么它的异常规格必须包含该类的基类和成员子对象的所有可能抛出的异常。
  7. 使用 Pimpl 思想来保持类内部的“可选的部分”。如果一个成员对象的构造函数可能抛出异常而你不一定需要那个对象,就可以在类中仅仅保持一个指向该对象的指针。通过该指针是否为空来判断是否持有改对象。
  8. 最后重复一下:使用“资源分配就是初始化”而不是手动管理资源。

文章来源:http://my.donews.com/robinchow/2007/01/29/cagxxmzwktgtrdirlmuspfjuarcxkcumdbjb/

posted @ 2007-10-23 20:47 Robin Chow 阅读(113) | 评论 (0)编辑 收藏

[导入]More Exceptional C++ 之 8

关于 C++ 构造函数:
  • 构造函数通过到达函数体结尾或者 return 表达式结束,此时对象开始存在,或者
  • 构造函数抛出一个异常,那么对象不仅不存在,而且从来就没有作为一个“对象”存在过。
除了以上两者,再没有其它可能。

文章来源:http://my.donews.com/robinchow/2007/01/29/pcrflkpnmgqpmgsigqxqftmyehrvvsnlufrf/

posted @ 2007-10-23 20:47 Robin Chow 阅读(100) | 评论 (0)编辑 收藏

[导入]Ten reasons why every programmer should learn C(英文)



Ten reasons why every programmer should learn C


文章来源:http://my.donews.com/robinchow/2007/01/25/vquwpymxknruwglornwepdtsfdwqmyjipeef/

posted @ 2007-10-23 20:47 Robin Chow 阅读(71) | 评论 (0)编辑 收藏

[导入]More Exceptional C++ 之 7

小结:
  1. 避免使用宏,它常常使得代码难于读懂从而不方便维护。
  2. 再次注意,非 const 引用不能和临时对象进行绑定。这是函数参数应该尽量使用 const 引用的原因。
  3. 总是为重载操作符保留重载语义,也就是说,和内置类型的语义保持一致。
  4. 避免如下的代码:l.erase(i); i ++; 因为 erase 操作之后,i 已经失效,因此 i ++ 是无效的。
    正确的写法如下:l.erase( i ++);

文章来源:http://my.donews.com/robinchow/2007/01/23/zfcdeisfqfhckfpgukvjrmwoicoouodtugwy/

posted @ 2007-10-23 20:47 Robin Chow 阅读(76) | 评论 (0)编辑 收藏

[导入]More Exceptional C++ 之 6

在 Map 中,改变 Key 的惟一方法是先将它删除,再插入一个修改过的值。不要对 Key 进行任何直接或间接的修改,这样可能导致数据处于不确定的状态。Map 的 Key 是 const 的,而 Set 则不一定,因为 C++ 标准没有给出强制的规定。

文章来源:http://my.donews.com/robinchow/2007/01/23/hoknidslvhgfwhsdmssqezjefwyazkshzcuh/

posted @ 2007-10-23 20:47 Robin Chow 阅读(71) | 评论 (0)编辑 收藏

[导入]C#学习系列之接口

  1. 典型的接口定义如下: interface IControl { void Paint(); }
  2. 接口可以从零或多个接口中继承,即,接口支持多继承。
  3. 接口可以包含一个或多个成员,这些成员可以是方法、属性、索引指示器和事件,但不能是常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。
  4. 接口成员默认访问方式是 public。接口成员声明不能包含任何修饰符,比如成员声明前不能加 abstrace,public,protected,internal,private,virtual,override 或 static 修饰符。
  5. 如果类实现了某个接口,类也隐式地继承了该接口的所有的父接口,不管这些父接口有没有在类声明的基类表中列出。接口本身不提供所定义的成员的实现,它仅仅说明这些成员,这些成员必须依靠实现接口的类或其它接口的支持。

文章来源:http://my.donews.com/robinchow/2007/04/23/post-070423-115024-393/

posted @ 2007-10-23 20:45 Robin Chow 阅读(130) | 评论 (0)编辑 收藏

仅列出标题
共9页: 1 2 3 4 5 6 7 8 9 

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜