more effective c++条款总结

条款一:仔细区别 pointer(指针)和references(引用)。

条款二:最好使用c++类型的转型操作符。

条款三:绝不要以多态方式处理数组。

条款四:非必要,不要提供无参构造。

条款五:对定制的“类型转换函数”保持警觉。

条款六:区别++/--操作符的前置和后置形式。

条款七:千万不要重载&& ||和,操作符。

条款八:了解不同意义的new和delete。

条款九:利用destructers避免内存泄漏。

条款十:在constructers中避免内存泄漏。

条款十一:禁止异常流出destructers之外。

条款十二:了解“抛出一个异常”、“传递一个参数”、“调用一个虚函数”之间的差异。

条款十三:以by reference 方式捕捉异常

条款十四:明智使用exception specification。

条款十五:了解异常处理的成本。

条款十六:谨记80-20法则。

条款十七:考虑使用 lazy evaluation(缓式评估)。

条款十八:分期摊还预期的成本。

条款十九:了解临时对象的来源。

条款二十:协助完成“返回值优化”。

条款二十一:利用重载技术和避免隐式类型转换。

条款二十二:考虑以操作符复合形式(op=)取代其独身形式(op)。

条款二十三:考虑使用其他程序库。

条款二十四:了解virtual function、multiple inheritance、virtual base classes、runtime type identification 的成本。

条款二十五:将constructor 和 non-member function 虚化。

条款二十六:限制某个class 所能产生的对象数量。

条款二十七:要求(或禁止)对象产生在 heap中。

条款二十八;Smart Pointer (智能指针)。

条款二十九:Reference Counting (引用计数)。

条款三十:Proxy classes (替身类、代理类)。

条款三十一:让函数根据一个以上的对象类型来决定如何初始化。

条款三十二:在未来时态下发展程序。

条款三十三:将非尾端类设计为抽象类。

条款三十四:如何在一个程序中结合c++和c。

条款三十五;让自己习惯于标砖c++语言。

作者 : Scott Meyers 译序、导读 : 侯捷 译序(侯捷) C++ 是一个难学易用的语言! C++ 的难学,不仅在其广博的语法,以及语法背後的语意,以及语意背後的深层思维,以及深层思维背後的物件模型;C++ 的难学,还在於它提供了四种不同(但相辅相成)的程式设计思维模式:procedural-based,object-based,object-oriented,generic paradigm。 世上没有白吃的午餐。又要有效率,又要有弹性,又要前瞻望远,又要回溯相容,又要能治大国,又要能烹小鲜,学习起来当然就不可能太简单。 在如此庞大复杂的机制下,万千使用者前仆後续的动力是:一旦学成,妙用无穷。C++ 相关书籍之多,车载斗量;如天上繁星,如过江之鲫。广博如四库全书者有之(The C++ Programming Language、C++ Primer),深奥如重山复水者有之(The Annotated C++ Reference Manual, Inside the C++ Object Model),细说历史者有之(The Design and Evolution of C++, Ruminations on C++),独沽一味者有之(Polymorphism in C++, Genericity in C++),独树一帜者有之(Design Patterns,Large Scale C++ Software Design, C++ FAQs),程式库大全有之(The C++ Standard Library),另辟蹊径者有之(Generic Programming and the STL),工程经验之累积亦有之(Effective C++, More Effective C++, Exceptional C++)。 这其中,「工程经验之累积」对已具C++ 相当基础的程式员而言,有著致命的吸引力与立竿见影的帮助。Scott Meyers 的Effective C++ 和More Effective C++ 是此佼佼,Herb Sutter 的Exceptional C++ 则是後起之秀。 这书籍的一个共通特色是轻薄短小,并且高密度地纳入作者浸淫於C++/OOP 领域多年而广泛的经验。它们不但开展读者的视野,也为读者提供各种C++/OOP 常见问题或易犯错误的解决模型。某些小范围主题诸如「在base classes 中使用virtual destructor」、「令operator= 传回*this 的reference」,可能在百科型C++ 语言书籍中亦曾概略提过,但此书籍以深度探索的方式,让我们了解问题背後的成因、最佳的解法、以及其他可能的牵扯。至於大范围主题,例如smart pointers, reference counting, proxy classes,double dispatching, 基本上已属design patterns 的层级! 这些都是经验的累积和心血的结晶。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值