<<Thinking in C++>> Edition2 Voloum1 读书笔记

<<Thinking in C++>> 是一本非常经典的书,略读了一遍,受益匪浅。

Chapter 1 Introduction to Objects
1. 基类和派生类之间的关系看做是一个“is-a”的关系。
   依赖关系:" ... uses a ..."; 
   关联关系:" ... has a ...";
   聚合关系:" ... owns a ...";
   组合关系:" ... is a part of ...".
2. 我们把处理派生类型就如同处理其基类的过程称为向上类型转换。 
3. 多态在运行时决定如何处理。
4. 从技术角度,OOP的论域就是抽象数据类型、继承和多态性。(comment:为什么没有封装?)
5. 为了最大化运行速度,通过将对象存放在栈中或静态存储区域中,存储和生命期可以在编写程序时确定。
   对象堆存储是在运行时动态管理的,所以堆上分配存储所需要的时间比栈上创建存储的时间长的多。
6. 异常是一个对象,它在出错的地方被抛出,并且被一段容易处理特定类型错误的异常处理代码所接收。
7. 不论做了多少分析,总有系统的一些问题直到设计时才暴露出来,并且更多的问题是到编程或直到程序完成运行时才出现。因此,迅速进行分析和设计并提出的系统执行测试时相当重要的。
8. 类职责协同(Class-Responsibility-Collaboration, CRC),在CRC卡片上描述一个类的内容:
   (1)类的名字(2)类的职责(3)类的协同
9. 开始编程,让一些部分能够运行,这样就可以证明或否定已生成的设计。
11. 提出一个漂亮的方案实际上是一种完全不同水平上的满足,感觉更接近于艺术,而不是技术。
12. C++堵塞了C语言中的许多漏洞,并提供更好的类型检查和编译时的分析。程序员必须先声明函数,是编译器能检查他们的使用。预处理器也限制了值替换和宏,这就减少了查找错误的困难。

Chapter 2 Making &using Objects
1. 大部分的解释器要求一次输入整个源代码。这不仅造成内存空间的限制,而且如果语言不提供设施隔离不同代码段之间的影响,一旦出现错误,就很难调试。
2. C++使用静态类型检查,JAVA也可在程序运行时作部分类型检查[动态类型检查]。动态类型检查和静态类型检查结合使用,比仅仅使用静态类型检查更有效。但它也增加了程序执行的开销。静态类型检查在编译时就告知程序员类型被误用,从而加快了执行时的速度。
3. 声明是向编译器介绍名字-标识符。定义为名字分配存储空间。
   int  func();在C中表示“一个可带任意参数(任意数目,任意类型)的函数”。这就妨碍了类型检查。而在C++语言中它就意味着“不带参数的函数”。
   C++不允许其它类型赋值于Void*, C语言允许。
4. C语言的设计者并不要求函数声明使用extern。
5. C中的”.h”扩展名的库仍然可用,使用它们,即在文件名前加一个字母”c” 。
   #include<stdio.h>和#include<stdlib.h>就变成#include<cstdio>和#include<cstdlib>,如果混用这两种形式,会遇到某些问题。 
6. 程序启动模块,它包含了对程序的初始化例程。初始化例程是开始执行C/C++程序时必须首先执行首先执行一段程序。初始化例程建立堆栈,并初始化程序的某些变量。
7. Using namespace std; 这就意味着打开std名字空间。在人们费劲心机把名字空间的名字隐藏起来之后,再保留名字空间的所有名字,这看起来是矛盾的。但是using指令仅仅保留当前文件的名字。
8. Cout<<”this ”
“is”
“book”;这样没有错,请记住C/C++是自由格式语言,每个语句结束时才加分号。
9. String具有动态特性,不必担心string的内存分配。String把文件当成单个字符串来处理…
10. Vector不仅仅限于输入和去除,还可以通过使用方括号的下标操作符向vector的任何一个单元赋值。这说明vector是通用、灵活的”暂存器”,用来处理对象集。

Chapter 3 The C in C++
1. Func()在C中表示不确定的参数数目,C++中表示空的参数列表; func(…)在C++中表示不确定的参数数目。Func(void)在C/C++中都表示空的参数列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值