《Effective C++:改善程序与设计的55个具体作法》 by Scott Meyers
明智选择+精心设计
声明(declaration):告诉编译器某个东西的名称和类型,但略去细节。
定义(definition):提供过编译器一些声明所遗漏的细节。
初始化(initiation):给予对象初值的过程。
default 构造函数:构造函数没有参数 or 每个参数都有缺省值。
explicit 构造函数:禁止编译器执行非预期的类型转换(隐式类型转换)。
copy 构造函数:用来以同类型对象初始化自我对象。copy assignment 操作符:用来从另一个同类型对象中拷贝其值到自我对象。
class Widget { public: Widget(); // default 构造函数 Widget(const Widget& rhs); // copy 构造函数 Widget& operator=(const Widget& rhs); // copy assignment 操作符 ... }; Widget w1; // 调用 default 构造函数 Widget w2(w1); // 调用 copy 构造函数 w1 = w2; // 调用 copy assignment 操作符(无新对象被定义) Widget w3 = w2; // 调用 copy 构造函数!!! // 有新对象被定义(如w3),一定有个构造函数被调用,所以不可能为赋值操作
passed-by-value:意味着“调用 copy 构造函数”。
使用 passed-by-reference-to-const。