Effective C++
ziggy7
这个作者很懒,什么都没留下…
展开
-
《Effective c++》读书笔记 6.继承与面向对象设计
public继承意味着“is-a”,virtual函数意味“接口必须被继承”,non-virtual函数意味“接口和继承都必须被继承” 32.确定你的public继承塑模出is-a关系 **public继承意味着“is-a”关系:**令D以public继承B,说明每一个D类型的对象同时也是一个B类型的对象。能够对B对象做的每件事情,一样可以施行在D对象身上,反之则不行。(D具有B不具有的特性) 33.避免遮掩继承而来的名称 普通作用域问题: 涉及继承的作用域问题 遮掩的情况:派生类的名称会遮掩基类的名称原创 2020-08-24 15:42:15 · 130 阅读 · 0 评论 -
《Effective c++》读书笔记 4.设计与声明
本章讲的是c++接口的设计与声明,让接口容易被正确使用,不容易被误用 18.让接口容易被正确使用,不易被误用(没看懂) 19.设计class犹如设计type(没看懂) 20.宁以pass-by-reference-to-const替换pass-by-value 原因: 1.以by value方式传递一个对象,要新创建一个对象的副本,成本很高 2.对象切割:当派生类对象以by value方式传递并被视为基类对象时,会变成基类对象,派生类的特性就没有了,而用引用传递没有这个问题 内部原因:pass by ref原创 2020-07-14 11:18:17 · 101 阅读 · 0 评论 -
《Effective c++》读书笔记 5.实现
26.尽可能延后变量定义式的出现时间 两条准则 1.延后变量的定义,直到非得使用该变量的前一刻为止 原因:如果定义了不用,会付出一次构造和析构的成本 2.甚至应该延后这份定义直到能够给它初值实参为止 “通过default构造函数构造出一个对象然后对它赋值” 比 “直接在构造时指定初值” 效率差 循环怎么定义变量? ●两种做法: 1.定义于循环外 Widget w; for(int i = 0; i < n; ++i){ w = ...; } 2.定义于循环内 for(int i = 0; i &l原创 2020-07-14 21:18:22 · 177 阅读 · 0 评论 -
《Effective c++》读书笔记 3.资源管理
资源:动态分配内存,互斥锁,数据库连接等 原则:不再使用资源时,必须还给系统 13.以对象管理资源原创 2020-07-11 17:00:58 · 136 阅读 · 0 评论 -
《Effective c++》读书笔记 2.构造,析构,赋值
5.了解c++默默编写并调用哪些函数 空类中 如果自己没有声明,编译器就会声明一个default构造函数,一个copy构造函数,一个copy assignment操作符,一个析构函数 不能生成operator = 的条件 1.内含reference成员和内含const成员(c++不允许reference和const改变) 2.基类copy assignment为private 6.若不想使用编译器自动生成的函数,就该明确拒绝 拒绝的方法: ●将成员函数声明为private而且故意不实现它们 ●继承专门为了阻原创 2020-07-08 10:34:10 · 145 阅读 · 0 评论 -
《Effective c++》读书笔记 1.自己习惯c++
1.视c++为一个语言联邦 c++主要的次语言有四个: ●c:区块、语句、预处理器、数组、指针等统统来自C,但是C没有模板、异常、重载 ●Object—Oriented C++:即C with Classes的诉求,classes、封装、继承、多态、虚函数 ●Template C++:即泛型编程 ●STL:STL是个template程序库,内有容器、迭代器、算法、函数对象等 每个次语言都有自己的规约,如内置类型而言pass-by-value比pass-by-reference更高效,但是面向对象C++和te原创 2020-07-08 10:33:22 · 237 阅读 · 0 评论
分享