第一部分 C++概述
1. 面向对象的程序设计方法通过继承inheritance 机制和动态绑定dynamic binding 机制扩展了抽象数据类型,继承机制是对现有实现代码的重用;动态绑定是指对现有的公有接口的重用.
2. C++是一种支持多种程序设计方法的语言,虽然我们主要把它当作面向对象的语言,但实际上它也提供对过程化的和基于对象的程序设计方法的支持,这样做的好处是对每个问题都能够提供最合适的解决方案。
第一章 开始
1. 分而治之divide and conquer 和逐步求精stepwise refinement
2. 此一旦错误被改正后应当马上重新编译这个循环过程通常被称为编辑一编 译一调试edit compile debug
3. 编译C++程序时编译器自动定义了一个预处理器名字__cplusplus 注意前面有两个下划线。在编译标准C 时编译器将自动定义名字__STDC__ 当然__cplusplus 与__STDC__不会同时被定义
4. 另外两个比较有用的预定义名字是__LINE__和__FILE__,__LINE__记录文件已经被编译的行数,__FILE__包含正在被编译的文件的名字
第二章 C++ 浏览
1. C++不支持数组的抽象abstraction,也不支持对整个数组的操作
2. 对象可以静态分配——即编译器在处理程序源代码时分配;也可以动态分配——即程序执行时调用运行时刻库函数来分配。这两种内存分配方法的主要区别是效率与灵活性之间的平衡准则不同
3. 静态与动态内存分配的两个主要区别:是静态对象是有名字的变量,我们直接对其进行操作;而动态对象是没有名字的变量,我们通过指针间接地对它进行操作.静态对象的分配与释放由编译器自动处理;相反动态对象的分配与释放必须由程序员显式地管理.
4. 内存泄漏是指一块动态分配的内存我们不再拥有指向这块内存的指针因此我们没有办法将它返还给程序供以后重新使用
5. 构造函数和析构函数是程序员提供的函数,它们既不构造也不销毁类的对象,编译器自动把它们作用到这些对象上。类的构造函数主要用来初始化类对象的数据成员,析构函数主要负责释放类对象在生命期内申请到的所有资源。
6. 为了把一个类设计成基类要做的第二个设计考虑是找出类型相关的成员函数并把这些成员函数标记为virtual 虚拟的,对于类型相关的成员函数它的算法由特定的基类或派生类的行为或实现来决定
7. 对于一个非虚拟函数的调用,编译器在编译时刻选择被调用的函数;而虚拟函数调用的决定则要等到运行时刻在执行程序内部的每个调用点上,系统根据被调用对象的实际基类或派生类的类型来决定选择哪一个虚拟函数实例。
8. 名字空间别名namespace alias 允许用一个可替代的短的或更一般的名字与一个现有的名字空间关联起来例如,// 提供一个更一般化的别名
namespace LIB = IBM_Canada_Laboratory;
使用: LIB::Array<int> ia(1024);
在标准C++中数组类是C++标准库的一部分,现在它不叫数组,而叫向量vector 了,当然向量是一个类。