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条 ...
随机推荐
- Ubuntu下解压rar文件的方法
原帖地址:http://hi.baidu.com/remoteexp/item/1c32d0ffb92e946c3c148596 一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了ra ...
- jquery table的隔行变色 鼠标事件
一.鼠标事件 mouseover(function(){}); 鼠标移动到目标事件 mouseout(function(){}); 鼠标离开目标的事件 二.具体应用代码 <body> &l ...
- MVC权限模块
设计方向: 1.摒弃SiteMap,避免在容易书写错误的sitemap中书写,导航在controller和action上打标签生成. 2.controller统一继承basecontroller,在b ...
- HDU 1429 胜利大逃亡(续)(DP + 状态压缩)
胜利大逃亡(续) Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)…… 这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢 ...
- ZOJ 1733 Common Subsequence(LCS)
Common Subsequence Time Limit: 2 Seconds Memory Limit: 65536 KB A subsequence of a given sequen ...
- 在Windows下用MingW 4.5.2编译OpenCV 2.3.0
需要的工具:1.安装QT SDK环境2.安装CMake for Windows3.OpenCV最新Windows源码步骤:1.将QT SDK安装目录下的{QtSDK}\mingw\bin添加到系统环境 ...
- JS-运动框架
写这段代码,是因为之前看过某前RD写过,但在测试过程中发现有不完美的地方. 问题在于判断运动停止条件这里,对于之前停止的判断太片面,只能判断一个条件值时的情况,对于多条件时,会发现运动后的各项值并未达 ...
- memcached在windows安装
下载地址: http://s3.amazonaws.com/downloads.northscale.com/memcached-win64-1.4.4-14.ziphttp://s3.amazona ...
- union 与struct的空间计算
一.x86 总体上遵循两个原则: 整体空间----占用空间最大的成员(的类型)所占字节数的整数倍 对齐原则----内存按结构成员的先后顺序排列,当排到该成员变量时,其前面已摆放的空间大小必须是该成员类 ...
- 百度云推送 pem
1. p12证书导出 在钥匙串访问中选中推送证书,导出为个人信息交换文件(.p12格式). 选择文件格式.文件名和保存路径. 输入导出密码. 2. pem证书生成 将p12证书文件转换成pem证书文件 ...