来源:互联网 发布:网易公开课 网络不给力 编辑:程序博客网 时间:2024/04/27 14:38

相对全局变量,静态数据成员的优势

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

}

}

0 0