分类: C/C++
2011-02-24 23:41:08
C++初始化类的成员,不仅可以用constructor完成,也可以用初始化类成员列表来完成。
有些情况只能用第一种,而且通常第一种效率高些。两者区别:
1,普通变量编译器会默认替你初始化。它们既能初始化,也能被赋值,而常量const按照其意思只能被初始化,不能赋值。所有const member只能用成员初始化列表来完成初始化,不能在构造函数内为它们赋值。
2,类对象初始化是调用它的构造函数完成,如没有写构造函数,编译器会默认生成一个。如定义带参数的构造函数,那么编译器不生成默认构造函数,这样 这个类对象的初始化必须有参数,如果此对象用作另一个类的成员,为了初始化这个成员,必须为这个类的对象构造函数传递一个参数。所以一个类里的所有构造函 数都是有参数的,那么这样的类如果做为别的类的成员函数,必须显示的初始化它,你也只能通过成员初始化列表来完成初始化。
参考:
1,C++初始化成员列表 http://blog.chinaunix.net/u/21790/showart_323092.html