Point 1 关于拷贝构造函数
1 拷贝构造函数式构造函数的一种。
2 系统提供默认的拷贝构造函数,但是往往不够,不如待初始化有指向动态内存的指针。
3 如下两种初始化方法相同,都是调用拷贝构造函数,
IntArray ia1 = array;
IntArray ia1(array);
Point2 关于函数重载和虚函数
1 相同点:都是继承相关概念,都是子类对父类相同概念的不同实现。
2差别:
重载函数必须参数类型,个数不同,不同的重载函数必须在同一个域中,这个是编译时确定的。
虚函数必须参数返回值和父类完全一致,使用c++动态绑定的特性确定到底调用哪个函数,这个是运行时确定的。
Point3 关于继承的子类与基类的构造函数问题
1 子类不继承基类的构造函数 (书上说这样会有更严重的问题,什么问题?)
2 子类即使没有新增成员,也需要定义构造函数,以向基类传递相关参数,比如:
inline IntArrayRc::IntArrayRc(int sz) : IntArray(sz) {}
3 子类拷贝构造函数无需定义(为什么?书上说14章-17章会解释,好期待!)
Point4 关于泛型设计
1 泛型设计指的事使用模板,包括模板类,模板函数。
2 模板类实例化的过程:对于模板类中的数据成员,编译器会绑定到对应的具体类型,分配内存; 对于成员函数,则是只有被程序使用的的成员函数才会被实例化。16.8节有详细介绍。
Point5 关于异常处理
1 一个try可以对应多个catch子句,以捕获不同的异常:
try {
xxxx;
}
catch (string expmsg)
{ ---------------}
catch(const statsexpect &stateexps)
{------------------}
Ponit6 关于名字空间
1 为防止名字污染,使用名字空间定义子模块的类,及其实现:
namespace XXXXX {
class A {
}
}
使用名字空间方法:
using namespace XXXX;
2 c++ 标准库使用名字空间std。
Point7 关于向量vector
c++标准数组vector同传统数组异同:
1 使用任何传统数组用法。
2 vector可以动态增加大小。
3 vector并非同自己设置的数组类一样实现巨大的成员函数操作集合,而是实现最少的操作,比如size empty等,而基于其他的vector操作C++是使用泛型算法来独立提供。