1. 程序被组织成4个逻辑段:可执行代码、静态数据、动态数据(堆)和栈。
l 可执行代码和静态数据存储在固定的内存位置。
l 程序请求动态分配的内存来自于成为堆的内存池。
l 局部数据对象、函数的参数以及调用函数和被调用函数的联系放在称为栈的内存池中。
2. 什么时候使用引用,什么时候使用指针?下面给出了一些指导原则:
l 如果指向的变量可能不存在,那么就使用指针。对于指针参数,可以用空地址表示变量不存在;而空引用是不存在的。
l 如果程序必须遍历对象的数组,那么就应该考虑使用指针。
l 引用的好处是可以避免使用指针得到对象所需要的复杂表示法。
3. 类中的内联函数,有两种定义方法:
l 直接在类声明的内部定义函数体,而不是给出一个函数原型;
l 在类外部定义函数时使用关键字inline,当采用这种方法时,要把它和类的声明放在同一个源代码文件中,这样,该函数对所有用到这个类的源代码模块都是可见的。
4. 虚基类本身有一些原则。构造函数带有参数的类不能是虚基类。如果不这样限制,编译器就不知道派生类使用哪一个构造函数参数表。另外一个限制是,指向虚基类的指针不能被强制转换为类层次结构中该类之下的类型。
5. dynamic_cast操作符将一个基类引用或指针转换为一个派生类引用或指针,或者将一个派生类引用或指针转换为一个基类引用或指针。只有当基类至少有一个虚函数时,才可以使用dynamic_cast。