Effective C++学习笔记(0)

元气小坏坏 提交于 2020-02-06 23:11:57

0 导读

术语

声明式(declaration)
对象声明(object)——指定类型
函数声明(function)——指定参数和返回类型
类声明(class)——指定类名
模板声明(template)——tempalte或template

定义式(definition)
1、为对象(object)分配内存
2、为函数(function)或模板函数(template function)提供代码本体
3、列出类(class)和模板类(template class)的成员

初始化(initialization)
对于类来说,其对象的初始化需要通过构造函数来实现。
1、默认构造函数(default constructor)
参数列表要么没有参数,要么所有参数都提供缺省值。

2、构造函数(constructor)
在自己定义构造函数时,可以在类名前加上explicit关键字进行限定,禁止编译器执行非预期的类型转换。即内置类型向类类型的转换不能通过隐式类型转换进行,而只能通过显示类型转换(强制类型转换)实现。

3、复制构造函数(copy constructor)
一般在定义一个类时,会自动定义复制构造函数和重载复制运算符,但如果私有数据中有指针类型变量时,就需要自己重新定义复制构造函数和重载的赋值运算符,实现深度复制——拷贝指针所指向的地址中所存放的值;否则会自动执行浅复制——仅仅拷贝了指针(地址),这样使用new分配动态内存后,再使用delete释放时会造成同一个地址被释放了两次。
“=”赋值运算符的使用:当使用“=”初始化一个新的类对象时,将会调用复制构造函数;对于一个已经定义过的类对象,再使用“=”时,由于该类对象在定义时已经调用过构造函数进行初始化,所以不会调用复制构造函数,而是调用重载的赋值运算符函数

calssname& operator = (const classname& rhs)

STL标准模板库(Standard Template Library)
容器(vector、list、set、map等)
迭代器(vector::iterator、set::iterator等)
算法(for_each、find、sort等)

命名习惯

二元操作符:左右两个参数分别定义为lhs(左手边)和rhs(右手边)
指针:pt表示指向一个T型对象(point to T)
引用:rw表示引用一个W型对象(reference to W)
成员函数:mf(member function)

关于线程

如果所检验的C++构件在多线程环境中有可能引发问题,就把它指出来。

TR1和Boost

TR1:表示规范,描述加入C++标准程序库的新机能,所有的TR1组件都被置于命名空间(namespace)tr1内,而tr1又被嵌套再命名空间std中。
Boost:组织亦网站(http://boost.org),提供可移植、同僚复审、源代码开放的C++程序库。且大多数TR1机能以Boost的工作为基础。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!