The C++ Programming Language 读书笔记(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gary_god/article/details/69397857

最近在读《C++程序设计语言》,都说这本书是学习C++必读的书,而且目前读了几章收获也很大,因此决定每章写一篇读书笔记来记录所学。主要都是一些比较散的点。这一篇是“致读者”这一章的读书笔记。

C与C++的异同
1. 在C++里几乎不需要用宏。用const和enum定义明显的常量,用inline避免函数调用的额外开销,用template去刻画一族函数或者类型,用namespace避免名字冲突。
2. c++不要在你需要变量之前去声明它,以保证你能立即对变量进行初始化。c++的声明语句可以出现在任何位置。
3. c++不要使用malloc(),new运算符能将同样的事做的更好,对于c语言中的realloc(),改用vector()
4. c++中要避免void*,指针算术,联合和强制。在大部分情况下,强制都代表着设计上的错误。
5. c++与c最重要的区别在于,c++要把程序考虑为一组由类和对象表示的相互作用的概念,而不是一堆数据结构和一些去拨弄数据结构中二进制位的函数

下面是作者关于c++编程的一些思考,相当精彩!
6. 在大部分应用中,都会存在这样一种概念,它既不能被方便的表示为一种基本类型,也不能被表示为一种函数。遇到这种概念就需要将它表示为类。因此我们常常需要思考这样一些问题:这个类的对象应该如何建立?如何复制销毁?这个类的对象应该能进行哪些操作?等等。如果对这些问题没有一个清晰的答案,那么或许我们应该继续仔细思考这些基本概念问题,而不是慌着开始写代码。
7. 将相互有关的概念组织到一个树形结构中,使最一般的概念成为树根(也就是基类),这也就是c++中的派生类结构。虚函数常常被用于为一个概念的最一般版本(基类)定义操作。针对特定的派生类,对这些操作再进行更精确化的处理。
8. 有些概念具有内在的相互依赖性,我们应该设法将这种依赖性局部化,使他们不会影响程序的整体结构。要解除这种依赖关系,一个很好的办法就是界面和实现的清晰分离,这个时候就需要用到抽象类
9. 一个类模板刻画了一族类,模板是通过给定另一个类作为参数,就可以生出一个新的类来。通过使用继承的类型表达一个类及其相关函数的参数化通常是个错误,这件事最好是用模板做。
10. 许多程序设计能够仅用基本类型,数据结构,普通函数和若干库类完成,这样做既简单又清晰。

忠告

  1. 在编程序时,如果想针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能直接地反映这些思想:
    a.如果“它”是一个独立的概念,那么把“它”设计为一个类。
    b.如果“它”是一个独立的实体,那么把它设计为一个对象。
    c.如果两个类有共同的界面,那么把这个界面设计为一个抽象类。
    d.如果两个类有一些明显的共性,那么把这些共性提取为一个基类。
    e.如果一个类是一种对象的容器,将它做成一个模板。
    f.如果一个函数实现对某容器的一个算法,将它实现为对一族容器可用的模板函数。
    g.如果一组类,模板等互相之间有逻辑联系,将他们放进一个名字空间里。

你并不需要在知道了c++的所有细节之后才能写出好的c++程序

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页