类内初始化与初始化列表与构造函数内部赋值

来源:互联网 发布:stm8中文数据手册 编辑:程序博客网 时间:2024/05/06 06:52

好的。首先把构造函数内部赋值这种观念和习惯剔除掉。

因为:1.效率低,它的本质是赋值,不是初始化,c++内部机制事实上已经为成员变量默认初始化了,然后你又在构造函数里面赋了一次值。

           2.易错,对于const成员变量,初始化之后就不可以赋值了。


下面比较类内初始化和初始化列表。

相同点:1.从名字就可以看出,两者都是初始化。


不同点:1.如果对于同一个变量,两者同时出现,则以初始化列表为主。

              2.如果一个类含有多个构造函数,这个时候使用类内初始化会只用写一次,

              3.类内初始化的顺序是隐式的,初始化列表一般要按照较严格的顺序来初始化,否则编译器可能会报警告

              4.类内初始化不可以(),只可以{}和=


总结:1.尽量使用初始化列表来为成员变量赋值(注意实质上是初始化)

           2.对于类(static)成员变量使用类内初始化

原创粉丝点击