相对全局变量,静态数据成员的优势
1.静态数据成员没有进入程序的全局名字空间,因此不存在程序中其他全局名字冲突的问题
2.使用静态数据成员可以隐藏信息,因为静态成员可以是private,而全局对象不能。
无论在狗仔函数初始化列表中初始化成员,还是在构造函数体内对它们赋值,最终结果相同。
不同:构造函数在初始化列表初始数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值。
1.const 和引用类型数据成员变量只能被初始化而不能做赋值操作
2.类的构造函数需要调用其基类的构造函数,只能用初始化列表,不能用赋值 eg 在子类构造函数中要初始化父类的private成员,直接赋值不行,只有调用父类的构造函数才能完成对它的初始化。但在函数体内调用父类的构造函数不合法,只能用初始化列表调用子类构造函数的方式
class B : public A
{
B(int x, int y) : A(x) //需要初始化b及父类的a
{
a = x; //错误 a为private
}
}