Effective C++阅读小记
导读
1.C/C++中关键字extern
基本解释:extern
可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern
也可用来进行链接指定。
摘要:https://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html
extern "C" void fun(int a, int b);
告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名。
extern int g_Int;
声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块活其他模块中使用。
2.标准C库中的size_t
(类似于unsigned int
)
基本解释:size_t 类型定义在cstddef
头文件中,该文件是C标准库的头文件stddef.h
的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。
摘要:https://baike.baidu.com/item/size_t
size_t
只是一个typedef
,是C++计算个数(例如字符串内的char*-based
字符个数或STL容器内的元素个数等等)时用的某种不带正负号unsigned
类型。
3.术语
签名式:每个函数的声明揭示其签名式(signature),也就是参数和返回类型。一个函数的签名等同于该函数的类型。
定义式:定义式(definition)的任务是提供编译器一些声明式所遗漏的细节。对对象而言,定义式是编译器为此对象拨发内存的地点。
初始化:初始化(Initialization)是“给予对象初值”的过程。对用户自定义类型的对象而言,初始化由构造函数执行。所谓default
构造函数是一个可被调用而不带任何实参者。
explicit:被声明为explicit
的构造函数通常比其non-explici
兄弟更受欢迎,因为它们禁止编译器执行非预期(往往不被期望)的类型转换。
除非允许构造函数被用于隐式类型转换,否则就把它声明为explicit
。
拷贝构造函数:以同型对象初始化自我对象。
拷贝操作符:从另一个同型对象中拷贝其值到自我对象。
bool test(Widget w);
...
Widget aWidget;
if (test(aWidget)) ...
这个复制动作由Widget的构造函数完成。Pass-by-value
意味“调用拷贝构造函数”。
Pass-by-reference-to-const
往往是比较好的选择。
4.命名习惯
常用:
1.lhs
: left-hand side 左手端
2.rhs
: right-hand side 右手端
3.pt
: pointer to T 指向一个T型对象
4.rw
: reference to Widget
如上类似的命名习惯。
5.关于线程
有线程概念的程序员是更有竞争力的。
线程安全性是许多程序员面对的主题。
6.TR1和Boost
TR1:是一份规范,描述加入C++标准程序库的诸多新技能。
Boost: 是个组织,亦是一个网站(http://boost.org),提供可移植、同僚复查、源代码开放的C++程序库。