![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 104 阅读 · 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 · 88 阅读 · 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 · 140 阅读 · 0 评论 -
《Effective c++》读书笔记 3.资源管理
资源:动态分配内存,互斥锁,数据库连接等原则:不再使用资源时,必须还给系统13.以对象管理资源原创 2020-07-11 17:00:58 · 109 阅读 · 0 评论 -
《Effective c++》读书笔记 2.构造,析构,赋值
5.了解c++默默编写并调用哪些函数空类中如果自己没有声明,编译器就会声明一个default构造函数,一个copy构造函数,一个copy assignment操作符,一个析构函数不能生成operator = 的条件1.内含reference成员和内含const成员(c++不允许reference和const改变)2.基类copy assignment为private6.若不想使用编译器自动生成的函数,就该明确拒绝拒绝的方法:●将成员函数声明为private而且故意不实现它们●继承专门为了阻原创 2020-07-08 10:34:10 · 123 阅读 · 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 · 203 阅读 · 0 评论