Effective C++学习笔记

条款04:确定对象使用之前以先被初始化

成员初始化列表(member initializer list)

  1. 区别赋值和初始化的区别

  2. const和reference 成员变量必须使用初始化列表
    类对象const成员的动态初始化;初始化引用数据成员对于在类中被声明为引用的类成员,也必须使用这种方法。因为引用与const数据类似,只能在被创建时进行初始化。

  3. 普通内置类型
    尽量也使用初始化列表

  4. 以local-static对象替换 non-local static对象
    C++中的static对象是指存储区不属于stack和heap、”寿命”从被构造出来直至程序结束为止的对象。这些对象包括全局对象,定义于namespace作用域的对象,在class、function以及file作用域中被声明为static的对象。其中,函数内的static对象称为local static 对象,而其它static对象称为non-local static对象。
    这两者在何时被初始化(构造)这个问题上存在细微的差别:

    ->对于local static对象,在其所属的函数被调用之前,该对象并不存在,即只有在第一次调用对应函数时,local static对象才被构造出来。
    ->而对于non-local static对象,在main()函数开始前就已经被构造出来,并在main()函数结束后被析构。

参考:Effective C++ 中文版 改善程序与设计的55个具体做法

猜你喜欢

转载自blog.csdn.net/qq_28350997/article/details/81071620
今日推荐