`
chelsea
  • 浏览: 121625 次
  • 来自: ...
社区版块
存档分类
最新评论

Exceptional C++

    博客分类:
 
阅读更多

(翻译的太差了)

一、语法细节

  1. C++不允许修改内置类型的临时变量

  2. 缺省参数根据静态类型获得

  3. 重载的new和delete操作符永远都是静态的,不管你声明static没有

二、惯用法

  1. 选择前置递增,只有打算使用初始值时才使用后置递增,并且使用前置递增来实现后置递增

  2. 注意由隐式转换创建的隐藏临时对象;避免这个问题的好办法,是使用explicit构造函数,避免编写转换操作符

  3. 永远不要#include不必要的头文件;当前置声明足够时,永远不要#include头文件

  4. 明智的使用名称空间:如果将一个类放入一个名字空间内,那么一定也要将所有的辅助函数和操作符放入相同的名字空间中

  5. 永远不要多态的处理数组;语言要求传递给delete[]操作符的指针类型必须与它的动态类型保持一致

  6. const auto_ptr<>,对特定问题几乎完美的惯用法

三、原则

  1. GLSP:泛型的Liskov替换原则:当作模板参数传递的任何类型(或模板)都应当遵守这个参数的需求

  2. 需要特别注意赋值操作符的异常安全性,因为它与拷贝构造函数是不一样的

  3. 优先选择内聚性,设法使每块代码(每个模块,每个类,每个函数)具有单一的,定义良好的职责;如果一块代码由于内在的设计问题而不能被编写成异常安全的,那几乎总是拙劣设计的表现,例如,带有两个不同职责的函数是难于编写成异常安全的

  4. 遵守规范的异常安全性规则:(1),永远不要允许异常逃离析构函数、重载的delete()和delete[]()操作符;(2),设法使用RAII来隔离资源资源所有权和资源管理;(3),在每个函数中,将所有可能抛出异常的代码以及能够安全处理此类工作的代码单独放置到一边,只有确信实际的工作已经完成时,才使用无异常抛出的操作来修改程序的状态

  5. 在什么情况下使用公有继承?我们需要公有继承来表示is-a关系,所有被改写的成员函数必须不要求更多,也不要承诺更少;永远不要为了重用基类中的代码而进行公有继承;

  6. 在什么情况下使用非公有继承而不是包含?(1),我们需要改写一个虚函数;(2),我们需要访问保护成员;(3),我们需要在另一个基类子对象之前构造被使用类,或者在其之后析构被使用类;(4),我们需要共享共用的虚拟基类,或者改写虚拟基类的构造;(5),我们从空基类优化上获益匪浅;(6),我们需要“受控的多态”,但只是在某种代码中

  7. 接口规则:对于一个类X,所有“提及”X和与X“一起提供”的函数(包括自由函数)逻辑上都是X的一部分,因为它们构成了X接口的一部分;成员函数与非成员函数逻辑上都可能是类的一部分,然而,成员函数仍然比非成员函数与类有更强的关系;“一起提供”的一种有用的诠释方式是“出现在相同的头文件和/或名称空间中”,如果出现在相同头文件中,那么它们在依存关系上是类的一部分,如果出现在相同名称空间中,那么它们在名字查找的意义上是类的一部分

四、实践

  1. 使用自己最熟悉的技术构造产品的核心部分,在扩展部分试验自己感兴趣的新技术并从中学习

  2. 记住计算机科学格言:大多数问题都可以通过增加一个间接层来解决,当然,用奥坎姆剃刀(Occam's Razor)来调和一下是明智的:不要使事情变得比必要的更复杂

五、观点

  1. C++标准化工作对C++最重要的贡献是:对“强大的抽象概念”更有力的支持,以降低软件的复杂性;

  2. 面向对象编程的最重要的优点:是通过管理代码之间的依存关系来降低软件的复杂性

六、问题

  1. 标准库是不是没有提供定长数组的包装类?vector是不是足够用了?

  2. 没有auto_array_ptr<>,或者auto_ptr对数组的特化,是不是应该始终用vector来代替动态分配内存的数组?

分享到:
评论

相关推荐

    Exceptional C++ (简体中文版).pdf

    从给定的文件信息来看,这是一本名为《Exceptional C++》的简体中文版书籍,主要聚焦于C++编程中的异常处理和高级技术。虽然提供的内容部分并不清晰,但我们可以根据标题、描述和标签推测出这本书的核心知识点。下面...

    Exceptional C++(中文版)和More Exceptional C++(中、英文版)

    《Exceptional C++》与《More Exceptional C++》是两本由Stanley B. Lippman编著的关于C++编程技术的经典书籍,旨在帮助程序员深入理解和掌握C++的高级特性,提升代码质量,避免常见陷阱。中文版的《Exceptional C++...

    exceptional c++ 与 more exceptional c++ 英文版

    《Exceptional C++》与《More Exceptional C++》是由著名C++专家Stanley B. Lippman编著的两本经典著作,旨在帮助程序员深入理解C++语言的细节和陷阱,提升编程技能,实现更高效、更健壮的代码。这两本书在C++社区中...

    Exceptional C++[中文] + More Exceptional C++[英文]

    《Exceptional C++》与《More Exceptional C++》是两本非常著名的C++编程书籍,由Stanley B. Lippman所著。这两本书旨在帮助C++开发者深入理解语言的高级特性,提升编程技巧,并避免常见的编程陷阱。 《Exceptional...

    exceptional C++ style 英文版 chm, pdf 和 中文版 pdf 合集

    Exceptional C++ Style: New Engineering Puzzles, Programming Problems, and Solutions 英文版 chm, pdf 和 中文版 pdf 合集

    exceptional & more exceptional C++.zip

    《Exceptional C++》与《More Exceptional C++》是C++编程领域的经典之作,由知名C++专家Stanley B. Lippman所著。这两本书深入探讨了C++编程中的高级主题,旨在帮助读者提升对C++语言的深度理解和实践能力。 ...

    Exceptional C++ PDF

    《Exceptional C++》是一本由Stanley B. Lippman、Josée Lajoie和Barbara E. Moo合著的经典C++编程书籍,中文非扫描版提供了方便中文读者阅读的高质量文本。这本书旨在帮助程序员深入理解C++语言的精髓,避免常见...

    exceptional c++:47个c++工程难题、编程问题和解决方案(英文版)

    《exceptional c++:47个c++工程难题、编程问题和解决方案(中文版)》讲述如何用标准c++进行企业级的软件开发,通过“问题/解答”的方式,启发读者思考,帮助了解隐藏在问题背后的设计思想,以及各种编程指导原则适用...

    Exceptional C++(pdf)

    《Exceptional C++》是C++编程领域的一本经典之作,由知名软件设计大师Stanley B. Lippman所著。这本书深入探讨了C++语言中的高级特性和陷阱,旨在帮助程序员写出更高效、更安全、更易于维护的代码。通过对书中知识...

    exceptional c++ 下载地址

    exceptional c++ 下载地址 exceptional c++ 下载地址exceptional c++ 下载地址 exceptional c++ 下载地址 exceptional c++ 下载地址 exceptional c++ 下载地址 exceptional c++ 下载地址

    Exceptional C++中文版

    《Exceptional C++》是C++编程领域的一部经典之作,由知名C++专家Stanley B. Lippman所著。这本书深入探讨了C++语言中的高级特性和陷阱,旨在帮助程序员写出更高效、更安全、更易于维护的代码。在阅读这本书的过程中...

    More Exceptional C++中文版

    《More Exceptional C++》是一本深受欢迎的C++编程技术书籍,中文版的出现使得更多的中国程序员能够接触到其中的精华。这本书的核心理念是通过深入探讨C++异常处理、模板元编程、设计模式等高级主题,帮助开发者提升...

    Exceptional C++ 中文版+高清+目录索引

    根据提供的信息,“Exceptional C++ 中文版+高清+目录索引”似乎是一本专注于C++高级编程技术的书籍。由于具体内容部分并没有提供实际的文字内容,我们只能从标题、描述和标签来推测这本书可能涉及的知识点。下面将...

    Exceptional C++ Style中文版

    根据提供的标题“Exceptional C++ Style中文版”及其描述,我们可以推断这本书主要涉及C++编程语言中的高级和实用技巧,旨在帮助读者更好地理解和运用C++。虽然给出的部分内容并没有实质性的信息,但从书名来看,...

    Exceptional C++ 英文版 文字版 PDF格式 无水印 完整版 Herb Sutter

    Exceptional C++ 英文版 文字版 PDF格式 无水印 完整版 47 Engineering Puzzles, Programming Problems, and Solutions Herb Sutter 内容简介 · · · · · · 《Exceptional C++:47个C++工程难题、编程问题和解决...

    Exceptional C++ 中文繁体字版 Herb Sutter

    《Exceptional C++》是Herb Sutter撰写的一本经典编程书籍,主要针对C++编程语言的高级特性和最佳实践。这本书旨在帮助开发者理解和利用C++的复杂性,提升代码的质量和效率,同时避免常见的陷阱和错误。以下是该书...

    Exceptional C++中文版((美) Herb Sutter)

    《Exceptional C++》是美国著名C++专家Herb Sutter撰写的一本经典书籍,它深入探讨了C++编程中的高级主题和最佳实践。这本书旨在帮助程序员写出更高效、更安全、更易于维护的C++代码,提升他们的编程技能。在阅读这...

Global site tag (gtag.js) - Google Analytics