- Initialization 非常重要,否则容易产生随机BUG且不易查找
构造函数分为默认构造函数和含参构造函数
初始化列表
- 一般情况下,初始化列表和在花括号中初始化效果相同;
- 但是,如果有自定义类型,则最好在初始化列表中进行初始化!
- 过程为:首先,在进入花括号之前,如果没有在初始化列表中写,这些自定义类型都会被调用一遍默认构造函数;然后进入花括号之后,如果写
y = Y(10)
,实际是新建了一个临时对象,然后赋值;
Const Objects
- 如果
class
中的某个函数不会对内部造成影响,要加上const
字段,这样const
的对象也可以使用;否则不能使用
- 对于
class
中的const
成员,要在初始化列表中初始化,而不能在花括号中赋值,因为这样编译器会认为是赋值而非初始化,而const
成员只接受初始化;
Inline
- 如果函数用
inline
修饰,那么在编译成汇编代码的时候,编译器就会将函数直接在原地展开,这样就可以避免函数调用的开销
inline
函数会比macro
更安全
- 注意:递归不能做成
inline