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 比较好!
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 比较好!
相关文章推荐
- 《effective c++》读书笔记4
- 《effective C++》读书笔记
- 《effective C++》读书笔记三——资源管理
- Effective C++ 读书笔记一
- Effective C++ 读书笔记三
- Effective C++ 读书笔记之Part9.Miscellany
- Effective C++ 读书笔记(6)
- Effective C++ 读书笔记(17)
- Effective C++ 读书笔记——条款2:尽量以const,enum,inline替换#define
- Effective C++ 读书笔记(30)
- 《Effective C++》读书笔记(第一部分)
- 读书笔记《Effective C++》条款31:将文件间的编译依存关系降至最低
- effective C++ 读书笔记 条款14 以对象管理资源
- 读书笔记《Effective C++》条款40:明智而审慎地使用多重继承
- 《Effective C++》第3章 资源管理(1)-读书笔记
- Effective C++ 读书笔记9(32~34)
- Effective c++ 读书笔记
- 【Effective C++ 读书笔记】条款04:确定对象使用前已先被初始化
- effective c++ 读书笔记
- 《Effective C++》读书笔记