effective C++ 读书笔记(4)

1: 内置类型以外的任何 东西  其初始化责任落在构造函数上 : 确保每个构造函数都将对象的每一个成员初始化。

2:不要搞混了 赋值(assignment) 和 初始化(initiallization)

   assignment 实际做了 先调用default 构造函数 在调用copy构造函数   消耗较高

3: 如果成员变量是const 或是 reference 他们只能被初始化 不能被赋值 也即是说 他们只能在成员初始化类表中被初始化

4:non-local static 对象的初始化

        (1) static 对象: 从被构造出来开始 , 直到main()函数退出 后才被消亡

                               因此=> stack 和 heap-base 对象 都不是

                                global对象 定义于namespace 内对象 在class内 在函数内 在file作用域内(?) 被声明为static 的对象

         2: 不同编译单元内的non-local static 对象 初始化 顺序 没有 明确规定

         3: 因此采用singleton 设计模式 可以搞定 (inline 的绝佳应用)

             static A* getInstance()

{

if(m_instance==NULL)

{

m_instance = new A();

}

return m_instance;

}

        4: 但是这里又牵涉到多线程安全的问题

               1: 在程序单线程启动的时候手动调用 该函数

               2: double-lock 比较好!

posted @ 2011-09-07 12:21  王帅901  阅读(129)  评论(0编辑  收藏  举报