《Effective C++》读书笔记(一)

1.让自己习惯C++

条款 01:视C++为一个语言联邦

条款 02:尽量以const, enum, inline替换 #define

或者说 宁可以编译器替换预处理器。

1.const

2.enum

3.inline

条款03:尽可能使用const

1.基本用法

2.位置变了,含义未变

3.const成员函数

const对象只能调用const成员函数

4. const vector<int>::iterator与vector<int>::const_iterator。类似int* const p与const int* p

5.成员函数常量性不同可以重载

6

7.bitwise const不准更改对象内任何一个bit

8.const成员函数不能调用non-const成员函数,要用const_cast解决

条款04:确定对象被使用前已先被初始化

  1. C++不同的组成部分初始化规则不同

2.成员初始化列表效率更高

下面方法调用了default构造函数设初值然后赋值

3.多个构造函数存在许多成员变量

4.初值列次序最好总以声明为次序。

5.解决无法确定不同编译单元内non-local static对象的初始化相对次序

6.解决non-const static在多线程下等待某事发生的麻烦

2 构造/析构/赋值运算

条款05 : 了解C++默默编写并调用哪些函数

1.

条款 06 若不想使用编译器自动生成的函数,就应该明确拒绝

1.将一些自动生成的函数声明为private并且不去定义

但不是对其本身操作,而是让其继承一个组织copying的base class

条款 07 : 为多态基类声明virtual析构函数

1.局部销毁对象形成资源泄漏,败坏数据结构,浪费调试时间

2.析构函数调用顺序

条款08 : 别让异常逃离析构函数

1.析构函数吐出异常,程序可能过早结束或者出现不明行为。为了避免这种情况出现可以强迫程序结束,或者吞下异常。

条款 09 : 绝不在构造和析构过程中调用virtual函数

1.此条款不适用于java或c#

2.

条款 10 : 令operator= 返回一个reference to *this

条款 11 : 在operator= 中处理"自我赋值"

1.证同测试与令指针指向一个副本

条款12:赋值对象时勿忘其每一个成分

1.

3 资源管理

条款13:以对象管理资源

1. auto_ptr不同寻常的复制操作

2.引用计数型智慧指针(RCSP)

条款14:在资源管理类中小心copying行为

1.

2.

条款15:在资源管理器中提供对原始资源的访问

条款16:成对使用new和delete时要采用相同的形式

1.

条款17:以独立语句将newed对象置入智能指针

猜你喜欢

转载自blog.csdn.net/qq_27012963/article/details/80230971