初始化列表:
与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。
class foo
{
public:
foo(string s, int i):name(s), id(i){} ; // 初始化列表
private:
string name ;int id ;
};
从概念上来讲,构造函数的执行可以分成两个阶段, 初始化阶段 和 计算阶段 ,初始化阶段先于计算阶段
初始化阶段
所有类类型(class type)的成员都会在初始化阶段初始化,即使该成员没有出现在构造函数的初始化列表中
计算阶段
一般用于执行构造函数体内的赋值操作。
构造方法:
如果一个类Base在另一个类Delete中作为一个 成员进行声明,则在Delete类调用构造方法时 的 “初始化阶段” 就会调用Base 的无参构造方法。
另:通过 new 得到的是这个类 的实例 的地址!所以必须要由指针接收!