Effective C++
文章平均质量分 91
Effective C++读书笔记,以及从中想到的
七夜落幕丶
这个作者很懒,什么都没留下…
展开
-
Effetive C++读书笔记-第1、2章
1 熟悉C++ & 2 构造/析构/赋值运算 2 尽量以const,enum,inline替换#define 1 对于常量声明,尽量用const代替#define 2 #define不具有封装性,所以在类内部用static const来代替。(声明时就要赋初值) 3 也可以用枚举代替static const,因为枚举没有地址的概念,空间分配在常量区,所以无法对其取地址(C++中...原创 2018-05-03 16:27:49 · 239 阅读 · 0 评论 -
Effetive C++读书笔记-第3章
3资源管理 系统常见的资源除了内存还包括文件描述符,互斥锁,数据库连接,网络socket等。 13 以对象管理资源 1 使用原始指针(如工厂函数返回构建的堆上资源的指针)容易因为忘记delete造成内存泄漏,解决的方法是获得资源后将其放入管理对象内,管理对象在超出其生存期后,会自动调用析构函数,只要在析构函数中执行内存的释放,就可以通过析构函数自动执行资源释放。这些管理对象被称为RAII...原创 2018-05-04 13:56:04 · 150 阅读 · 0 评论 -
Effetive C++读书笔记-第4章
4 设计与声明 18 让接口容易被正确使用,不易被误用 理想上,如果用户企图使用一个接口而却没有获得预期的行为,代码就应该不通过编译,例如一个接口要求输入一个月份,此时输入小于1和大于12的数都是无效的,我们应该尽量使用不兼容这些数的接口,即输入小于1或者大于12的数就无法通过编译。 可选的一个方法是使用enum,但是enum不具备类型安全性,也就是说可以被转换成其他的类型使用(如int)。...原创 2018-05-07 14:45:28 · 189 阅读 · 0 评论 -
Effetive C++读书笔记-第5章
5 实现 26 尽可能延后变量定义时的出现时间 变量应在使用的时候进行构造,并且通过default构造函数构造出一个对象然后对它赋值,比直接在构造时指定初值效率差。 27 尽量少做转型动作 1 四种C++式转型 const_cast:通常被用来将对象的常量性去除。 dynamic_cast:主要用来执行安全向下转型(基类到派生类),也就是用来决定某对象是否归属于继承体系中的某个...原创 2018-05-09 14:23:01 · 274 阅读 · 0 评论 -
Effetive C++读书笔记-第6章
6 继承和面向对象设计 32 确定你的public继承塑膜出is-a关系 public继承意味着“is-a”,适用于基类身上的每一件事情也一定适用于派生类,因为每一个派生类对象也是一个基类的对象。 33 避免遮掩继承而来的名称 1 派生类内的名称会遮掩基类内的名称,基类里面重载的所有同名称函数(包括纯虚函数,虚函数,普通成员函数)会被派生类中重写的函数所掩盖,在派生类中无法访问基类...原创 2018-05-11 16:17:06 · 143 阅读 · 0 评论 -
Effetive C++读书笔记-第7章
7 模版与泛型编程 41 了解隐式接口和编译期多态 面向对象编程主要通过显式接口和运行期多态解决问题。 显式接口:源代码中可见,在头文件中看到的类的接口。 运行期多态:成员函数是virtual,传入类的引用或指针时,在运行时,会自动匹配接口,可能是基类的接口, 也可能是派生类的。 模版和泛型编程主要通过隐式接口和编译期多态解决问题。 隐式接口:typename T,函数中,会有类型...原创 2018-05-15 19:47:36 · 188 阅读 · 0 评论 -
Effetive C++读书笔记-第8、9章
8 定制new和delete & 9 杂项讨论 49 了解new-handler的行为 1 当operator new抛出异常以反映一个未获得满足的内存需求之前,它会先调用一个客户指定的错误处理函数,一个new-handler函数。 为了指定new-handler函数,需要调用std::set_new_handler(),其参数是无法分配足够内存时该被调用的函数,返回值是即将被替...原创 2018-05-18 14:27:49 · 176 阅读 · 0 评论