目录 条款32:确定你的public继承塑模出is-a关系(Makesurepublicinheritancemodels“is-a”) public继承的含义 设计良好的继承关系 is-a的例外 条款33:避免遮掩继承而来的名称(Avoidhidinginheritednames) 作用域的隐藏 继承的隐藏 继承重载的函数 条款34:区分接口继承和实现继承(Differentiatebetweeninheritanceofinterfaceandinheritanceofimplementation) 纯虚函数 虚函数 普通函数 条款35:考虑virtual函数以外的其...
目录 条款26:尽可能延后变量定义式的出现时间(Postponevariabledefinitionsaslongaspossible) 条款27:尽量少做转型动作(Minimizecasting) 条款28:避免返回handles指向对象内部成分(Avoidreturning“handles”toobjectinternals) 条款29:为“异常安全”而努力是值得的(Striveforexception-safecode) 异常不安全的案例 异常安全函数的保证 强烈的异常安全 条款30:透彻了解inlining的里里外外(Understandtheinsandoutsofin...
目录 条款17:让接口容易被正确使用,不易被误用(Makeinterfaceseasytousecorrectlyandhardtouseincorrectly) 限制类型和值 规定能做和不能做的事 提供行为一致的接口 条款19:设计class犹如设计type(Treatclassdesignastypedesign) 条款20:宁以pass-by-reference-to-const替换pass-by-value(Preferpass-by-reference-to-constopass-by-value) 避免构造和析构 避免对象切割 例外 条款21:必须返回对象时,别妄...
目录 条款13:以对象管理资源(Useobjectstomanageresources) 关键想法 智能指针 条款14:在资源管理类中小心copying行为(Thinkcarefullyaboutcopyingbehaviorinresource-managingclasses) 条款15:在资源管理类中替工对原始资源的访问(Provideaccesstorawresourcesinresource-managingclasses) 显示转换或隐式转换 优缺点 条款16:成对使用new和delete时要采取相同形式(Usethesameformincorrespondingu...
目录 条款01:视C为一个语言联邦(ViewCasafederationoflanguages) 条款02:尽量以const、enum、inline替换define(Preferconsts,enums,andinlinestodefine) 替换原因 两种特殊常量 形似函数的宏 条款03:尽可能使用const(Useconstwheneverpossible) const和指针 const成员函数 在const和non-const成员函数中避免重复 条款04:确定对象被使用前已先被初始化(Makesurethatobjectsareinitializedbeforethey...
目录 条款05:了解C默默编写并调用哪些函数(KnowwhatfunctionsCsilentlywritesandcalls) 自动生成的函数 举例说明 条款06:若不想使用编译器自动生成的函数,就该明确拒绝(Explicitlydisallowtheuseofcompiler-generatedfunctionsyoudonotwant) 条款07:为多态基类声明virtual析构函数(Declaredestructorsvirtualinpolymorphicbaseclasses) virtual析构函数的作用 Virtual析构函数的缺点 Non-virtual析构...