《Effecitve C++》简略笔记——1~17

来源:互联网 发布:php工厂模式代码 编辑:程序博客网 时间:2024/05/20 17:24

Item 1

c++其实是个大杂烩。

Item 2

使用const,enums,inlines等,容易定位错误。宏有很多坏处,比如著名的max函数宏定义问题。

Item 3

多使用const,保证正确性等等。比如返回类型、const的函数等。还有const非const的转换问题。

Item 4

进行初始化。使用初始化列表,注意初始化和赋值,是不同的东西。还有传说的local static object,以及使用函数调用的方式来保证static的对象,可以在调用前进行初始化。

Item 5

会自动生成这四个函数,如果用户没有自行定义:构造,析构,拷贝构造,=。但是存在问题时,编译器不会自动构建=。

Item 6

显示不允许自动生成上述的函数,可以通过只declare不define。并且,设置为private,不让人们调用。更加好的方法,是使用Uncopyable基类的方式。

Item 7

在基类中,需要将析构函数定义为virtual的形式,这样子,当进行delete一个基类的指针时,可以通过虚表来执行实际的派生类析构函数。虚表,虚表指针等内容。还有虚函数增加内存的内容。

Item 8

在析构时,需要防止促发exception。主旨是,要能重现这个exception,方便进一步处理。

Item 9

在构造、析构函数中,不要调用虚函数,因为调用的版本可能会不对。构造、析构的过程。

Item 10

operators应该返回*this。与build-in类型一致。

Item 11

assignment to self。self-assignment safe,还有exception safe的方式。以及使用拷贝构造函数,swap函数等。

Item 12

要拷贝object的所有部分。在拷贝构造函数,=赋值号中,注意。

Item 13
使用对象去管理资源。RAII,Resource Acquisition Is Initialization,资源获取就是初始化。还有RCSP,Reference-Counting Smart Pointer。

Item 14

进行资源管理的类的拷贝时。

Item 15

提供raw source的访问方法。有两种,explicit(get函数),implicit(operator形式)。注意会有的问题。

Item 16

new delete时,数组问题,记得 [ ]

Item 17

使用智能指针时候,使用standalone statements,否则会有泄露的危险,因为C++对函数参数的实现顺序没有强制要求。


========TO BE CONTINUED======



原创粉丝点击