static

  • 声明在堆上申请静态存储
  • 对于局部变量,将存储方式改为静态存储
  • 对于全局变量,将连接方式局限在文件内
  • 类中static变量:属于整个类,独立存储,没有this指针

    inline

  • inline 放在函数定义前,定义为内联函数
  • 成员函数在类内定义默认为内联函数
  • inline 编译器做类型检查
  • 避免函数调用开销
  • 内联函数的每次调用都将复制代码,使得代码膨胀

    explicit

  • 强制显示构造,只能用于类内构造函数前,抑制隐式转换构造
  • 内置类型手工初始化,c++不保证内置类型初始化
  • 构造函数最好使用member initialnal list 初始化,尽量不使用赋值
  • 具有多态性质的基类应该声明一个虚析构函数,带有虚函数时,也应该设计一个虚析构函数
  • 在构造和析构函数中不要调用virtual函数,这类调用无法实现下降至derived class
  • operator= 返回一个reference to *this 以实现连续赋值
  • 保证operator = 自我赋值或者交换时的正确性
  • copy 函数确保全部元素复制,不仅是对象内部成员变量,也包括其base class 成员
  • 不要尝试用某个copy实现另一个copy函数,将共同即能放入第三个函数中,供copy函数调用即可
  • 将 资源封装成类对象,不使用时自动调用析构函数,释放资源。RAII(获得即初始化)
  • 对RAII对象执行复制操作的处理
    • 禁止复制:复制操作private
    • 底层资源引用计数:tr1::shared_ptr
    • 复制底层资源:深拷贝
    • 转移底层资源控制权:pointer 和tr1::auto_pointer
  • 以独立语句将new返回的指针置入智能指针中,避免在复合语句中执行置入
  • 接口设计应该与内置类型保持一致
    • 阻止误用:建立新类型,限制类型操作,束缚对象值,消除客户资源管理责任
  • 不要返回local stack 对象,或者refrence of heap 对象
  • 用non-menber non-firend 函数替换member函数,即通过外函数调用member 函数实现,保证类对象的封装性
  • 重载操作符可以在类内部,也可以在类外部,外部定义重载操作符可以对全部参数隐式转型
  • 降低文件之间的依赖关系
    • 在定义文件中,用到的类只做前置声明而不引入头文件定义
    • 在实现文件中,include用到的类的头文件
    • 引用和指针不需要定义式,声明对象时需要定义式
  • derived class 将会掩盖同名的base class 函数,使用 using声明或者转交函数(函数内部调用base class 被覆盖的函数)使用base class 被覆盖的函数
  • 接口继承与实现继承
    • 声明一个pure virtual函数是为了让derived class 只继承函数接口
    • 声明一个impure virtual 函数是为了让derived class 继承函数接口和缺省实现
    • 声明一个non-virtual 函数是为了让derived class 继承函数接口和一份强制实现
  • 绝对不重新定义继承来的non-virtual函数
  • 绝对不重新定义继承来的缺省参考值: 缺省值是静态绑定的
  • 应用域复合表示has a, 实现域复合表示is implemented in terms of
  • private 继承意味着只有实现部分被继承,接口部分被忽略
  • private继承意味着参考实现,当derived class 需要访问基类成员或者重定义继承而来的virtual 函数时,使用private继承
  • private 继承可以实现empty class 最小化
  • derived class templates 内部通过 “this->”使用base class templates 内成员,或者使用using 子句表明成员来源

Effective c++的更多相关文章

  1. Effective前端2:优化html标签

    div { float: left; } .keyboard > div + div { margin-left: 8px; } --> div{display:table-cell;ve ...

  2. Effective java笔记(二),所有对象的通用方法

    Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...

  3. 《Effective java》-----读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并 ...

  4. 《Effective Java》学习笔记——积累和激励

    从一个实际案例说起 国庆长假前一个礼拜,老大给我分配了这么一个bug,就是打印出来的报表数量为整数的,有的带小数位,有的不带,毫无规律. 根据短短的两个多月的工作经验以及猜测,最终把范围缩小到以下这段 ...

  5. Effective前端5:减少前端代码耦合

    什么是代码耦合?代码耦合的表现是改了一点毛发而牵动了全身,或者是想要改点东西,需要在一堆代码里面找半天.由于前端需要组织js/css/html,耦合的问题可能会更加明显,下面按照耦合的情况分别说明: ...

  6. Effective前端4:尽可能地使用伪元素

    伪元素是一个好东西,但是很多人都没怎么用,因为他们觉得伪元素太诡异了.其实使用伪元素有很多好处,最大的好处是它可以简化页面的html标签,同时用起来也很方便,善于使用伪元素可以让你的页面更加地简洁优雅 ...

  7. Effective前端3:用CSS画一个三角形

    p { text-indent: 2em } .triangle-container p { text-indent: 0 } img { margin: 15px 0 } 三角形的场景很常见,打开一 ...

  8. Effective前端1:能使用html/css解决的问题就不要使用JS

    div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...

  9. Effective Java笔记一 创建和销毁对象

    Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...

  10. effective java 读后感

    think in java  , effective java  这两本书一直都在java的生态圈中经久不衰.本来想着先翻过 think in java 这本大山,但是读到一半就放弃了.过长的篇幅,让 ...

随机推荐

  1. 《java编程思想》读书笔记(二)第五章(2)

    成员初始化 Java尽力保证:所有变量在使用前都能得到恰当的初始化. 对于方法的局部变量,Java会以编译时报错的形式贯彻这种保证,比如: void f() { int i; //这里编译时就会报错, ...

  2. bzoj2441 小W的问题

    bzoj2441 按照纵坐标排序,从小到大插入数列中,每个点i维护一个data[i]表示未插入序列中横坐标小于i的数的个数(用线段树)其实点i就是“W”中第一个极小点,那么f[j]就等于1到j-1中所 ...

  3. 使用游戏引擎photon打造一款特殊的远程控制软件

    前言 本文主要是介绍photon引擎的一些基本用法,以及使用游戏引擎开发远控的优势 0x1 有一段时候对做游戏的unity开发有些兴趣,在找游戏服务端引擎的时候,突然发现了这款歪果人开发的游戏引擎ph ...

  4. 在skyDriver上保存代码

    在家里写的代码, 有时候在公司也想打开改一改. 以前, 我都是使用优盘进行拷贝, 或者直接在优盘上进行操作. 有时, 忘了带优盘就傻眼了. 也想过直接托管到代码托管网站. 但主流的一些托管,都是要开源 ...

  5. 游戏AI框架

  6. PHP 数组转码

    /** * 数组转码 * @param array $arr 要转码的数组 * @param string $in_charset 输入的字符集 * @param string $out_charse ...

  7. 查看Visual Studio异常内容

    If Entity Framework throws a validation exception when saving, Visual Studio reports the message, Va ...

  8. VR内容定制请找北京动软VR团队,长年承接VR/AR应用、游戏内容定制

    最近这一拔VR及AR浪潮得到业界的热捧,与2015年年底到2016年年初乐相.蚁视.睿悦.焰火工坊等VR创业公司,陆续发布融资的信息不无关系.业界也有统计数据称,约90%的VR投资案例,发生在2015 ...

  9. Cannot get a connection, pool exhausted解决办法

    http://blog.163.com/it_message/blog/static/8892051200908102032653/ 连接池(Tomcat+oracle),运行一段时间后就会出现 Ca ...

  10. Visual Studio 14 初试,vNext

    下了几天的VS 2014 .终于安装上了,花了好几天时间, VS 2014  下载地址, http://www.visualstudio.com/en-us/downloads/visual-stud ...