《Effective C++》学习笔记(0)

《Effective C++:改善程序与设计的55个具体方法》
Scott Meyers 著,侯捷 译

做个笔记帮助学习、理解和记忆,嗯。

0 导读

声明式 (declaration):告诉编译器某个东西的名称和类型(type),但略去细节。
签名式 (signature):函数的参数和返回类型。一个函数的签名等同于该函数的类型。
定义式 (definition):提供编译器一些声明式所遗漏的细节。
初始化 (initialization):“给予对象初值”的过程。对用户自定义类型的对象而言,初始化由构造函数执行。
default构造函数:一个可被调用而不带任何实参的构造函数。这样的构造函数要么没有初值,要么就是每个参数都有缺省值。
explicit构造函数:可阻止它们被用来进行隐式类型转换,但仍可被用来进行显示类型转换。explicit构造函数通常比non-explicit构造函数更受欢迎,因为它们禁止编译器执行非预期的类型转换。除非需要允许构造函数被用于隐式类型转换,否则建议声明为explicit。
copy构造函数:被用来“以同型对象初始化自我对象”,copy assignment(copy 赋值)操作符被用来“从另一个同型对象中拷贝其值到自我对象”。

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操作符

注意:“=”语法也可用来调用copy构造函数。

Widget w3 = w2;        // 调用copy构造函数

如果一个新对象被定义,一定会调用构造函数,如果没有新对象被定义,就是赋值操作被调用。copy构造函数定义一个对象如何passed by value(以值传递)。passed by value意味着“调用copy构造函数”。

STL:标准模板库(Standard Template Library),是C++标准程序库的一部分,致力于容器(如vector, list, set, map等), 迭代器(如vector::iterator, set::iterator等),算法(如for_each, find, sort等)及相关机能。

函数对象 (function objects):行为像函数的对象,这样的对象来自于重载operator()(function call 操作符)的classes。

作者在程序批注中提到构造函数和析构函数时,有时会使用缩写字 ctordtor

你可能感兴趣的:(《Effective C++》学习笔记(0))