01、视C++为一个语言邦;

  (1)、C++仍是以C为基础;

  (2)、面向对象的C++,包括构造、析构函数,封装,继承,多态,虚函数等;

  (3)、泛型编程C++,关于Template

  (4)、STL

02、尽量以const,enum,inline替换#define

  (1)、以const 替换#define

GamePlayer.hclass GamePlayer
{
public:GamePlayer();~GamePlayer();static const int NumTurns = 5;//常量表达式  //或enum {NumTurns = 5};int scores[NumTurns];           //使用该常量static const double FudgeFactor; //static class 常量声明,位于头文件内(double,float不支持在声明时直接初始化)};GamePlayer.cconst double GamePlayer::FudgeFactor //static class 常量定义,位于实现文件内

  (2)、以inline函数替换“宏函数”

#define CALL_WITH_MAX(a, b) f((a)>(b)?(a):(b))
int a = 5;
int b = 0;
CALL_WITH_MAX(++a, b);      //a被累加二次
CALL_WITH_MAX(++a, b+10);   //a被累加一次!!template<typename T>
inline void callWithMax(const T& a, const T& b)
{f(a > b ? a : b);
}

03、尽可能使用const

  (1)、修饰普通变量 const int VAL = 20;  //使变量只读  

  (2)、修饰形参(以引用、指针传参时) char *strcpy(const char *srcStr, char *destStr);//该函数不会修改修改srcStr内容

  (3)、修饰返回值(返回值类型为引用、指针时), const Vec2& getPosition(); //该返回值不允许被修改

  (4)、修饰成员函数,该成员函数内部不会修改成员变量(非mutable修饰)

04、确定对象被使用之前已先被初始化

  (1)、为内置类型进行手动初始化

  (2)、构造函数最好使用成员初值列表(效率高),而不要在构造函数本体内使用赋值操作。初值列表列出的成员变量,其排列次序应该和它们在class中的声明次序相同

  (3)、用local static(函数内定义) 对象替换non_local static(全局,class内)对象(问题:对于“定义于不同的编译单元内的non-local static 对象”的初始化相对次序并无明确定义)

转载于:https://www.cnblogs.com/quehualin/p/9184333.html

Effective C++ 笔记(1)让自己习惯c++相关推荐

  1. Effective C++笔记_条款31将文件间的编译依存关系降至最低

    Effective C++笔记_条款31将文件间的编译依存关系降至最低 这个章节,读了两遍还是不是很清楚,有一种没法和作者沟通的感觉,看来我还是一个C++的初学者呀.好吧,不多说了,回归主题,今天的笔 ...

  2. [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码

    函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...

  3. Effective Java笔记第五章枚举和注解第三节用EnumSet代替位域

    Effective Java笔记第五章枚举和注解 第三节用EnumSet代替位域 在以前如果一个枚举类型的元素主要用在集合中,一般就会使用int枚举模式.比如说: public class Demo ...

  4. 《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译时常量(const)...

    概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.比如Java只有JVM识 ...

  5. 【读书笔记】《微习惯:瘦身篇》

    笔记 如果一只动物处于半饥饿状态,它的新陈代谢率就会降低,饥饿感会增加,身体会尽量最多地储存脂肪,让自己能活下去.这不仅是常识,而且是经科学证明的真理. 节食是一种剥夺正常权利的行为,所以不节食是件好 ...

  6. 这几款文档笔记工具,你习惯用哪个?

    前言 俗话说的好:"好记性不如烂笔头",平时工作记录笔记的确是一个良好的习惯,做文档笔记可以在我们遗忘时进行回看,方便查找,代替人的大脑.有时程序写多了,很不愿意去强制记忆一些东西 ...

  7. 开发日记-20190824 关键词 读书笔记《掌控习惯》DAY 3

    <掌控习惯> 第三章 培养良好习惯的四步法 习惯是重复了足够多的次数后而变得自动化的行为.习惯形成的过程始于反复尝试.每当你在生活中遇到新的情况,你的大脑就要做出决定.对此我该如何回应?你 ...

  8. 开发日记-20190821 关键词 读书笔记《掌控习惯》DAY 1

    Preface 今天我期盼已久的两本书终于到了,当京东快递的快递小哥打电话给我的时候,我还是为快递比预期要早几个小时而欢呼雀跃不已,就像是春游前一天的小学生一样,尽管早早睡下,但是却始终难以抑制自己内 ...

  9. [Effective JavaScript 笔记]第6章:库和API设计--个人总结

    前言 又到了一章的总结,这章里的内容.是把我从一个代码的使用者,如何换位成一个代码的编写者.如何让别人用自己的代码更容易,不用去注意太多的无用细节,不用记住冗长的函数名.在使用API时怎样避免使用者会 ...

最新文章

  1. Ruby中,:(ampersand colon)的用法
  2. redis 小功能大用处
  3. 快速排序 挖坑_由浅入深玩转快速排序算法
  4. div css左边固定右边自适应布局
  5. c windows system32安装mysql_Windows下MySQL8社区版安装
  6. IntelliJ IDEA导包快捷键以及创建方法
  7. SSM框架实战详细教程(六)Spring MVC贯穿项目实战
  8. 盘点:光通信的五个发展趋势
  9. frp穿透你的远程桌面
  10. Java设计一个测桃花模块_20145209刘一阳《JAVA程序设计》第一周课堂测试
  11. html 纵向滚动条,css设置纵向滚动条
  12. Udacity Sparkify项目
  13. 2019 - 02 typescript的学习(结合cocos creator)
  14. NKOJ3685 8数
  15. 最新版 Office 三国杀,体验式寻找最强电子表格
  16. html字体由粗变细的方法,CSS 让 fontawesome 图标字体变细(示例代码)
  17. Java在ACM中的使用
  18. 打开u盘时出现“文件或目录损坏且无法读取“怎么解决
  19. 《小额贷款操作系统》MVC文献
  20. 监控--Prometheus

热门文章

  1. 依赖反转原理,IoC容器和依赖注入:第1部分
  2. Odoo10参考系列--Odoo指导方针
  3. hibernate整合mysql配置文件_springboot整合hibernate配置
  4. bootstraptable 怎么在特定行添加数据_同等权限下多任职之间数据权限的实例
  5. 16c语言第七届省赛,第十二届全国青少年信息学奥林匹克联赛初赛试题及答案普及组、C语言...
  6. 清空本地_PyQt5播放实时视频流或本地视频文件
  7. arch linux rpm格式,如何在ArchLinux上安装RPM包
  8. mysql的socket文件下载,mysql下的socket文件作用
  9. git项目初始上传服务器,快速架设一个使用 SSH 的 Git 服务
  10. oracle 统计文本字符串,oracle人员权限,字符串转列,统计管理详解-Oracle