effective C++ 读后笔记
首先不得不说侯捷翻译的书大部分我都很喜欢,因为侯捷本身是一名出色的C++技术专家。这本书讲的是C++如何高效的运行,我想要成为一名卓越的开发人员,代码的高效性是必不可少的。很多人的代码质量很差,即使能够勉强运行在以后的维护和重新编码中存在着巨大的问题,甚至是日后的运行投入中会遇到致命的错误。
条款01:视C++为一个语言联邦而不是单一一门语言:其可以分为如下几种语言 C、 Object—Oriented C++(封装、继承、多态、虚函数)、Template C++(泛型编程)、STL。C++的高效编程取决于我们使用C++的哪一部分。
条款02:尽量以const,enum,inline替换#define
条款03:尽可能使用const 它可以在class外部修饰global或namespace作用域中的常量,或修饰文件函数或者区块作用域中被声明为static的对象。也可以用它修饰class内部的static和non-static成员变量。面对指针,你也可以指出指针自身、指针所指物,或两者都是(或都不是)const,const出现在星号左边,则表示被指物是常量,如果const出现在星号右边则指针自身是常量。
条款04:确定对象被使用之前已被初始化 内置类型意外的任何其他东西,初始化的责任都落在构造函数身上:规则很简单,确保每一个构造函数都将对象的每一个成员初始化。构造函数最好使用成员初始列,而不要再构造函数本体内使用赋值操作。为免除“跨编译单元之初始化次序”问题,请以local static 代替 non-local static对象。
条款05:了解C++默默编写并调用哪些函数 就是说编译器自动补充了些什么在你只写了一些简单代码的时候比如你写了class XCoderLiu{};
就相当于写了下面这样的代码
class XCoderLiu{
public:
XCoderLiu(){...}
XCoderLiu(const XCoderLiu& rhs){...}
~XCoderLiu(){...}
XCoderLiu& operator=(const XCoderLiu& rhs){...}
};
编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment操作符,以及析构函数。
条款06:不想使用编译器自动生成的函数应该明确拒绝 为驳回编译器自动提供的机能,可将相应的成员函数声明为private并且不予实现。(貌似编译器提供的默认拷贝函数总是多多少少存在一些问题还是自己写比较好)
条款07:为多态基类声明virtual析构函数 任何class只要带有virtual函数几乎确定应该也有一个virtual析构函数
条款08:别让异常逃离析构函数 如果某个操作可能在失败时抛出异常,而又存在某种需要必须处理该异常,那么这个异常必须来自析构函数意外的某个函数。因为当系统存在两个以上的异常时候会出现不明确的错误,析构函数绝对不能吐出异常
条款09:绝对不在构造和析构函数中调用virtual函数 因为这类调用从不下降至derived class
条款10:令operator = 返回一个reference to *this (this指针的引用)
条款11:在operator=中处理“自我赋值” if(this == &rhs) return *this;
条款12:复制对象时勿忘其每一个成分 当你自己声明拷贝函数时编译器似乎被冒犯一样当你的实现代码几乎必然出错的时候却不告诉你。另外不要尝试在一个拷贝函数中实现另一个拷贝函数,应该将共同机能放进第三个函数中,并由两个拷贝函数共同调用。
条款13:以对象管理资源,在拷贝构造函数或者拷贝分配操作符复制它们,他们会变成null,而复制所得的指针将取得资源的唯一拥有权。
条款14:在资源管理类中小心coping行为 资源取得时机便是初始化时机
条款15: 在资源管理类中提供该对原始资源的访问 对原始资源的访问可能经由显示转换和隐式转换 一般而言显式转换比较安全 但是隐式转换对客户笔记哦啊方便。
条款16:成对地使用new和delete时要采用相同形式
条款17:以独立语句将newed对象置于智能指针 如果不这样做 一旦异常被抛出 有可能导致难以察觉的错误
条款18:
effective C++ 读后笔记的更多相关文章
- Effective前端2:优化html标签
div { float: left; } .keyboard > div + div { margin-left: 8px; } --> div{display:table-cell;ve ...
- Effective java笔记(二),所有对象的通用方法
Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...
- 《Effective java》-----读书笔记
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并 ...
- 《Effective Java》学习笔记——积累和激励
从一个实际案例说起 国庆长假前一个礼拜,老大给我分配了这么一个bug,就是打印出来的报表数量为整数的,有的带小数位,有的不带,毫无规律. 根据短短的两个多月的工作经验以及猜测,最终把范围缩小到以下这段 ...
- Effective前端5:减少前端代码耦合
什么是代码耦合?代码耦合的表现是改了一点毛发而牵动了全身,或者是想要改点东西,需要在一堆代码里面找半天.由于前端需要组织js/css/html,耦合的问题可能会更加明显,下面按照耦合的情况分别说明: ...
- Effective前端4:尽可能地使用伪元素
伪元素是一个好东西,但是很多人都没怎么用,因为他们觉得伪元素太诡异了.其实使用伪元素有很多好处,最大的好处是它可以简化页面的html标签,同时用起来也很方便,善于使用伪元素可以让你的页面更加地简洁优雅 ...
- Effective前端3:用CSS画一个三角形
p { text-indent: 2em } .triangle-container p { text-indent: 0 } img { margin: 15px 0 } 三角形的场景很常见,打开一 ...
- Effective前端1:能使用html/css解决的问题就不要使用JS
div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...
- Effective Java笔记一 创建和销毁对象
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...
随机推荐
- A题笔记(5)
No. 1385 挤牛奶问题 Tips: 查找之前对数据进行一下排列会比较好; 两个“最长”放在一趟遍历里查找. class LT { public: int bt; int ct; int dura ...
- MySQL Workbench 6.3 CE 不显示MySql、infomation_schema等数据库
MySQL Workbench 6.3 CE 不显示MySql.infomation_schema等数据库 通过修改偏好设置可显示: 1.Edit-->Preferences....-----& ...
- while循环的跳出
今天在编码时突然产生一个疑问:程序中有一个while循环,循环体执行的是某个附带条件限制的操作.我现在想达到的目的是 => 条件成立,就执行操作,并跳出循环:条件不成立就跳出当次的while循环 ...
- 系统设计 - IOS 程序插件及功能动态更新思路
所用框架及语言 IOS客户端-Wax(开发愤怒的小鸟的连接Lua 和 Objc的框架),Lua,Objc, 服务端-Java(用于返回插件页面) 由 于Lua脚本语言,不需要编译即可运行 ...
- 虚拟化技术与"云"
虚拟化技术: 如网站在某一时间访问量大,平时访问量少,如果一直保持大量的服务器提供服务,显示效率好低,浪费资源,在 不增减服务器,存储设备,网络等实际物理设备,而是利用软件将这些物理设备虚拟化,在有必 ...
- 纯JS写出日历
封装代码: (function(cmf){ cmf.showDcalendar=function(){ var fnname=cmf.fn var id="cmfrili2" va ...
- SNN--Second Name Node
NameNode有这么几个配置: Property Description Suggested value dfs.name.dir Directory in NameNode’s local fil ...
- .Net Remoting浅释
面试的时候,被问到.Net Remoting 工作方式及它和Web Service的区别,在此做个整理,顺便回顾一下. .Net Remoteing: 我们可以认为.Net Remoting是一种分布 ...
- 一张图看懂DNS域名解析全过程
DNS域名解析是互联网上非常重要的一项服务,上网冲浪(还有人在用这个词吗?)伴随着大量DNS服务来支撑,而对于网站运营来说,DNS域名解析的稳定可靠,意味着更多用户的喜欢,更好的SEO效果和更大的访问 ...
- VS2013相关资料
visual studio 主页 http://msdn.microsoft.com/en-us/vstudio/aa718325.aspx vs2013 download http://www.mi ...