摘要: 1.Coping 函数应该确保复制对象内的"每一个成员变量",和调用合适的 "base class"构造函数(base class 某些成员往往是private的) 2.不要为了代码重复性,让一个Coping函数去调用另一个Coping函数(无意义),如果出现过多代码重复,可声明一个init函数用于 阅读全文
posted @ 2017-07-30 22:05 FeckCode 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 1.确保当对象自我赋值时operator=有良好的行为,其中的技术包括 "来源对象" 和 "目标对象" 的地址,精心周到的语句顺序,以及“ copy and swap ” 技术 2.确定任何函数执行操作一个以上对象时,而其中多个对象是同一个对象时,其行为任然正确 Toal:一般具有管理资源分配的类使 阅读全文
posted @ 2017-07-30 21:00 FeckCode 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 1.令赋值操作返回一个reference to *this(除非你有个标新立异的理由,那就随大众- - ) 阅读全文
posted @ 2017-07-30 20:38 FeckCode 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 在构造和析构执行期间不要调用virtual函数,因为这类调用从不会下降至derived class(比起当前执行构造函数和析构函数) 如果在base class 构造函数或者析构函数调用virtual,derived class构造时会先构造base class,则base class中的virtu 阅读全文
posted @ 2017-07-30 17:32 FeckCode 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 1.析构函数绝对不要吐出异常,如果一个析构函数可能抛出异常,析构函数应该捕获任何异常,然后要么吞下它们或者退出程序 2.如果用户需要对析构内的可能抛出异常的操作做出反应,则应该将操作放入除析构函数外的普通函数中 阅读全文
posted @ 2017-07-30 16:41 FeckCode 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 注意:polymorphic base class 应该具有虚析构函数,如果class带有任何virtual函数,也应具有虚析构函数 class不具备polymorphic属性则不应该声明virtual 析构函数 1.老生常谈,如果一个类需要被使用为base calss 则为它声明 "virtual 阅读全文
posted @ 2017-07-30 16:03 FeckCode 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 1.为驳回编译器自动生成函数的技能,可把这些函数的声明放入private,如果是继承类型可把base class的这些函数声明private,可在编译期间得到警告 阅读全文
posted @ 2017-07-30 14:56 FeckCode 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 1.编译器可以暗自位class生成default构造,copy构造,copy assigned函数,析构函数; note1:如果没有自定义构造函数,编译器会为你生成合成默认构造函数.如果有定义则不生成 note2:如果没有定义copy构造和copy assigned函数,编译器也会为你生成合成默认的 阅读全文
posted @ 2017-07-30 14:42 FeckCode 阅读(161) 评论(0) 推荐(0) 编辑