第一种方式叫做初始化列表,与第二种情况相比会少一次默认构造。基本上就相当于下面两种情况的区别: 1. int i = x; 2. int i; i = x; 如果就例子中的两个int型成员变量而言,差异的确不大。但如果初始化的不是基本类型,且构造函数必须有参数的情况下就必须使用初始化列表。另外,引用,const类型(非static)成员变量,也都必须在初始化列表中继续初始化。
例如:
class T { public: T(int v){} };
class F { public: F(int& v) : m_t(1) , m_i(2) , m_ri(v) { }