您的位置:首页 > 编程语言 > C语言/C++

effective C++ 读书笔记(4)

2011-09-07 12:21 204 查看
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 比较好!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: