《Effective C++》笔记

《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。

猜你喜欢

转载自www.cnblogs.com/rockyching2009/p/13197548.html