5.5 建议
[1] 要控制对象的构造、拷贝、移动和析构;5.1.1节;[CG:R.1]。
[2] 构造函数、赋值操作和析构函数要设计为一组匹配的操作;5.1.1节;[CG:C.22]。
[3] 要么定义所有的基本操作,要么什么也不定义;5.1.1节;[CG:C.21]。
[4] 如果默认构造函数、赋值操作或析构函数是适合的,就让编译器去生成它们(不要自己重写);5.1.1节;[CG:C.20]。
[5] 如果类有一个指针成员,它就可能需要用户自定义的析构函数、拷贝操作和移动操作,或者禁止它们;5.1.1节;[CG:C.32][CG:C.33]。
[6] 如果类具有一个析构函数,它就可能需要用户自定义的拷贝和移动操作,或者禁止它们;5.2.1节。
[7] 默认将单参数构造函数声明为explicit的;5.1.1节;[CG:C.46]。
[8] 如果类成员有合理的默认值,以数据成员初始值的方式为其提供此默认值;5.1.3节;[CG:C.48]。
[9] 对于一个类型,如果默认拷贝语义不适合,重定义或禁止拷贝操作;5.2.1节、4.6.5节;[CG:C.61]。
[10] 通过传值方式返回容器(依赖移动操作提高性能);5.2.2节;[CG:F.20]。
[11] 对大的运算对象,采用const引用参数类型;5.2.2节;[CG:F.16]。
[12] 提供强资源安全。即,永远不泄漏任何可视为资源的东西;5.3节;[CG:R.1]。
[13] 如果某个类是一个资源句柄,则它需要一个用户自定义的构造函数、一个析构函数以及非默认的拷贝操作;5.3节;[CG:R.1]。
[14] 重载运算符应模仿常规用法;5.4节;[CG:C.160]。
[15] 遵循标准库容器设计;5.4.2节;[CG:C.100]。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access