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条 ...
随机推荐
- mysql的账户失效,之前的密码无法登录
引用自:http://blog.sina.com.cn/s/blog_682c287b0100ofz8.html 此为linux服务器下的做法 方法一: 1.关闭mysql # service ...
- oracle学习笔记1:windows下oracle数据库安装及.net调用oracle数据库
1.下载32位或64位oracle数据库并且安装,安装时可以选择安装数据库实例或者不安装,如果不安装的话之后可以用Database Configuration Assistant(DBCA) 通过向导 ...
- CSS jQuery HTML5 CSS3
jquery css3图片文字介绍鼠标滚动页面动画单页 http://www.17sucai.com/preview/1/2013-12-30/%E5%8A%A8%E7%94%BB%E5%8D%95% ...
- Page.ClientScript.RegisterStartupScript不执行问题
c#后台使用Page.ClientScript.RegisterStartupScript在前台注册一段脚本提示,发现没有效果,寻寻觅觅,终于从度娘处找到了原因: 该页面多次使用到了Page.Clie ...
- 搭建VPN服务器之PPTP
搭建VPN服务器之PPTP 1. 查看系统是否支持PPP 一般自己的系统支持,VPS需要验证. [root@oldboyedu ~]# cat /dev/ppp cat: /dev/ppp: No s ...
- 关于安卓启动eclipse错误:找不到元素‘d:devices'的声明
可以把C:\Documents and Settings\Administrator\.android\devices.xml这个文件删除, 再把sdk里面tools\lib下的这个文件拷贝到你删除的 ...
- 自定义流程gooflow.08 demo在线演示
一.功能简介 gooflow功能清单1.自定义流程绘制2.自定义属性添加3.支持3种步骤类型 普通审批步骤 自动决策步骤 手动决策步骤 4.决策方式(支持js决策,sql语句决策) 5.审批人员参与方 ...
- A transition animation compatible Library.
Android5.0之后为我们提供了许多炫酷的界面过渡效果,其中共享元素过渡也是很有亮点的一个效果,但这个效果只能在Android5.0之后使用,那今天我们就来将共享元素过渡效果兼容到Android4 ...
- yum命令学习
yum配置文件 /etc/yum.conf yum check-update检查一下有无更新 每天都要(设置定时任务todo) 1.列出所有可更新的软件清单---yum check-update 2. ...
- 查看linux进程(强制中止进程),服务及端口号,
进程状态查询 ps -aux [test@pan ~]$ ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START ...