Effective C++ 导读

介绍了C++的一些常见概念

Posted on May 3, 2017 in Effective_Cpp, ReadBook

声明式

签名式
定义式
初始化
对象的拷贝


声明式

定义:告诉编译器某个东西的名称与类型,但略去细节 

extern int x; //对象的声明 
std::size_t numDigits(int number); //函数的声明 
class Widget; //类的声明 
template 
class GraphNode; //模板的声明

签名式

定义:每个函数的声明揭示其签名式,也就是参数与返回类型,一个函数的签名等同于该函数的类型。 
函数指针就是通过函数的签名式来区分的,在boost库的function也是很注重函数签名式的,其模板<>里面写的就是函数的签名式 
参见5_boost库练习之function与bind的使用

定义式

定义:定义式的任务是提供编译器一些声明式所遗漏的细节。①对对象而言,定义式是编译器为此对象分配内存的地点;②对function而言就是提供代码本体;③对class而言就是列出成员。

初始化

定义:初始化就是“给予对象初值”的过程。对用户自定义的类型对象而言,初始化由其构造函数执行。 
P5 explicit加在一个类的构造函数前,就是阻止其进行隐式的类型转换,常运用explicit是好事

对象的拷贝

copy构造函数被用来“以同型对象初始化自我对象”,copy assignment操作符被用来“从另一个同型对象中拷贝其值到自我对象” 

Widget w1; //默认构造 
Widget w2(w1); //拷贝构造 
w2 = w1; //赋值 
Widget w3 = w1; // 拷贝构造

P6 一个对象被pass-by-value意味着被执行拷贝构造函数。 
注意ADT的对象(值语义)就必须有其拷贝构造函数,并允许其进行pass-by-value;而抽象类的对象(对象语义)就必须继承boost::noncopyable,且进行pass-by-reference-to-const

titlebar_background1.png