随笔分类 -  Effective C++

摘要:1.Coping 函数应该确保复制对象内的"每一个成员变量",和调用合适的 "base class"构造函数(base class 某些成员往往是private的) 2.不要为了代码重复性,让一个Coping函数去调用另一个Coping函数(无意义),如果出现过多代码重复,可声明一个init函数用于 阅读全文
posted @ 2017-07-30 22:05 FeckCode 阅读(94) 评论(0) 推荐(0)
摘要:1.确保当对象自我赋值时operator=有良好的行为,其中的技术包括 "来源对象" 和 "目标对象" 的地址,精心周到的语句顺序,以及“ copy and swap ” 技术 2.确定任何函数执行操作一个以上对象时,而其中多个对象是同一个对象时,其行为任然正确 Toal:一般具有管理资源分配的类使 阅读全文
posted @ 2017-07-30 21:00 FeckCode 阅读(199) 评论(0) 推荐(0)
摘要:1.令赋值操作返回一个reference to *this(除非你有个标新立异的理由,那就随大众- - ) 阅读全文
posted @ 2017-07-30 20:38 FeckCode 阅读(91) 评论(0) 推荐(0)
摘要:在构造和析构执行期间不要调用virtual函数,因为这类调用从不会下降至derived class(比起当前执行构造函数和析构函数) 如果在base class 构造函数或者析构函数调用virtual,derived class构造时会先构造base class,则base class中的virtu 阅读全文
posted @ 2017-07-30 17:32 FeckCode 阅读(148) 评论(0) 推荐(0)
摘要:1.析构函数绝对不要吐出异常,如果一个析构函数可能抛出异常,析构函数应该捕获任何异常,然后要么吞下它们或者退出程序 2.如果用户需要对析构内的可能抛出异常的操作做出反应,则应该将操作放入除析构函数外的普通函数中 阅读全文
posted @ 2017-07-30 16:41 FeckCode 阅读(138) 评论(0) 推荐(0)
摘要:注意:polymorphic base class 应该具有虚析构函数,如果class带有任何virtual函数,也应具有虚析构函数 class不具备polymorphic属性则不应该声明virtual 析构函数 1.老生常谈,如果一个类需要被使用为base calss 则为它声明 "virtual 阅读全文
posted @ 2017-07-30 16:03 FeckCode 阅读(184) 评论(0) 推荐(0)
摘要:1.为驳回编译器自动生成函数的技能,可把这些函数的声明放入private,如果是继承类型可把base class的这些函数声明private,可在编译期间得到警告 阅读全文
posted @ 2017-07-30 14:56 FeckCode 阅读(111) 评论(0) 推荐(0)
摘要:1.编译器可以暗自位class生成default构造,copy构造,copy assigned函数,析构函数; note1:如果没有自定义构造函数,编译器会为你生成合成默认构造函数.如果有定义则不生成 note2:如果没有定义copy构造和copy assigned函数,编译器也会为你生成合成默认的 阅读全文
posted @ 2017-07-30 14:42 FeckCode 阅读(169) 评论(0) 推荐(0)
摘要:1.为内置对象进行 "手工初始化",因为C++不保证初始化他们(内置类型在赋值与初始化销毁基本相同,最好还是进行初始化列表),在内置类型过多情况下,可选择private函数统一初始化(赋值与初始化效率持平) 2.构造函数最好使用成员初始化列表方式,构造函数体内属于赋值操作,且初始化列表最好与声明变量 阅读全文
posted @ 2017-07-29 23:06 FeckCode 阅读(184) 评论(0) 推荐(0)
摘要:1.尽量使用const修饰不会赋值操作的变量,防止 "无意义行为" 2.const成员函数遵守: bitwise constness 法则(只要函数内部不改变成员变量的,都是允许const修饰函数的) 3.如果某些成员在const函数内部总是会被改变 可以在变量声明处添加 “mutable”声明为多 阅读全文
posted @ 2017-07-29 19:32 FeckCode 阅读(143) 评论(0) 推荐(0)
摘要:1.首先#define 定义不重视作用域(scope),虽然可以#undef控制,但是不美观,还存在多次替换的问题,以及没有任何封装性. 2.const XXX_XX,保证其常量性以及可控的作用域,如果是指针类型则 const XXXX* const ptr="hello world",也可以完美替 阅读全文
posted @ 2017-07-29 19:12 FeckCode 阅读(202) 评论(0) 推荐(0)
摘要:C++由4个部分组成: 1.C part of C++; 2.Object-Oriented C++; 3.Template C++; 4.STL 请记住:C++的高效编程视状况而变化,取决你使用C++的那一部分. 阅读全文
posted @ 2017-07-29 18:51 FeckCode 阅读(135) 评论(0) 推荐(0)