
effective C++
布丁的自我修养
这个作者很懒,什么都没留下…
展开
-
Effective C++ 第一章:让自己习惯C++
序言 Effective C++ 的系列博文是本人学习了《Effective C++》(第三版)之后的学习整理,大部分内容来源于原书。为了更方便地回顾和复习,所以将一些重要的知识点提取出来。分享给大家一起进步学习原创 2019-01-24 13:03:13 · 231 阅读 · 1 评论 -
Effective C++ 第二章:构造/析构/赋值运算
第二章:构造/析构/赋值运算 条款5:了解C++默默编写并调用哪些函数 编译器会为一个类添加:一个copy构造函数、一个copy assignment操作符和一个析构函数、一个默认构造函数。这些函数都是public和inline的 class Empty{}; 相当于 class Empty() { public: Empty() Empty(const Empty& ...原创 2019-01-24 13:03:48 · 356 阅读 · 1 评论 -
Effective C++ 第三章:资源管理
第三章:资源管理 条款13:以对象管理资源 把资源放进对象内,我们便可以依赖C++的“析构函数自动调用机制”确保资源被释放。 void f() { std::auto_ptr<Investment> pInv(createInvestment()); //调用factory函数,经由auto_ptr的析构函数自动删除pInv } 获得资源后立刻放进管理对象 每一笔资源都...原创 2019-01-24 13:04:28 · 295 阅读 · 1 评论 -
Effective C++ 第四章:设计与声明
第四章:设计与声明 条款18:让接口容易被正确使用,不易被误用 tr1::shared_ptr允许当智能指针被建立起来时,指定一个资源释放函数(所谓的删除器deleter)绑定于智能指针身上。(auto_ptr)则不行。 //创建一个null shared_ptr<Investment> 并携带一个自定的删除器。 std::tr1::shared_ptr<Investment...原创 2019-01-24 13:08:57 · 263 阅读 · 1 评论 -
Effective C++ 第五章:实现
第五章:实现 条款26:尽可能延后变量定义式的出现时间 string encryptPassword(const string& password) { ... string encrypted; //调用默认构造函数default-construct encrypted = password; //赋值 ... } //更优版本 string encryptPassword(...原创 2019-01-24 13:09:33 · 228 阅读 · 1 评论 -
Effective C++ 第六章:继承与面向对象设计
第六章:继承与面向对象设计 条款32:确定你的public继承塑模出is-a关系 条款33:避免遮掩继承而来的名称 基类函数被子类函数所覆盖: class Base{ private: int x; public: virtual void f1() = 0; virtual void f1(int); virtual void f2(); void f3(); void f3(d...原创 2019-01-24 13:10:13 · 203 阅读 · 0 评论 -
Effective C++ 第七章:模板与泛型编程
第七章:模板与泛型编程 条款41:了解隐式接口和编译期多态 编译期的多态和运行期的多态的区别: 哪一个重载函数该被调用:发生在编译期 哪一个virtual函数该被绑定:发生在运行期 显式接口与隐式接口的区别: 显式接口由函数的签名式(函数名称、参数类型、返回类型)构成。如: class Widget{ public: Widget(); virtual ~Widget(); ...原创 2019-01-24 13:10:51 · 287 阅读 · 1 评论 -
Effective C++ 第八章:定制new和delete
第八章:定制new和delete 条款49:了解new-handler的行为 set_new_handler的参数是一个指针,指向operator new无法分配足够内存时该被调用的函数。返回值也是个指针,指向set_new_handler被调用前正在执行的那个new-handler函数。 namespace std{ typedef void (*new_handler)(); new_...原创 2019-01-24 13:11:29 · 275 阅读 · 0 评论 -
Effective C++ 第九章:杂项讨论
第九章:杂项讨论 条款53:不要轻易忽视编译器的警告 条款54:让自己熟悉包括TR1在内的标准程序库 TR1组件实例: 智能指针:tr1::shared_ptr tr1::function:此物可以表示任何callable entity(可调用物,也就是任何函数或函数对象) void registerCallback(string func(int)); //参数类型是函数,该函数...原创 2019-01-24 13:12:05 · 216 阅读 · 1 评论