Effective C++ 笔记(1)让自己习惯c++
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++相关推荐
- Effective C++笔记_条款31将文件间的编译依存关系降至最低
Effective C++笔记_条款31将文件间的编译依存关系降至最低 这个章节,读了两遍还是不是很清楚,有一种没法和作者沟通的感觉,看来我还是一个C++的初学者呀.好吧,不多说了,回归主题,今天的笔 ...
- [Effective JavaScript 笔记]第27条:使用闭包而不是字符串来封装代码
函数是一种将代码作为数据结构存储的便利方式,代码之后可以被执行.这使得富有表现力的高阶函数抽象如map和forEach成为可能.它也是js异步I/O方法的核心.与此同时,也可以将代码表示为字符串的形式 ...
- Effective Java笔记第五章枚举和注解第三节用EnumSet代替位域
Effective Java笔记第五章枚举和注解 第三节用EnumSet代替位域 在以前如果一个枚举类型的元素主要用在集合中,一般就会使用int枚举模式.比如说: public class Demo ...
- 《Effective C#》读书笔记-1.C# 语言习惯-2.使用运行时常量(readonly)而不是编译时常量(const)...
概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.比如Java只有JVM识 ...
- 【读书笔记】《微习惯:瘦身篇》
笔记 如果一只动物处于半饥饿状态,它的新陈代谢率就会降低,饥饿感会增加,身体会尽量最多地储存脂肪,让自己能活下去.这不仅是常识,而且是经科学证明的真理. 节食是一种剥夺正常权利的行为,所以不节食是件好 ...
- 这几款文档笔记工具,你习惯用哪个?
前言 俗话说的好:"好记性不如烂笔头",平时工作记录笔记的确是一个良好的习惯,做文档笔记可以在我们遗忘时进行回看,方便查找,代替人的大脑.有时程序写多了,很不愿意去强制记忆一些东西 ...
- 开发日记-20190824 关键词 读书笔记《掌控习惯》DAY 3
<掌控习惯> 第三章 培养良好习惯的四步法 习惯是重复了足够多的次数后而变得自动化的行为.习惯形成的过程始于反复尝试.每当你在生活中遇到新的情况,你的大脑就要做出决定.对此我该如何回应?你 ...
- 开发日记-20190821 关键词 读书笔记《掌控习惯》DAY 1
Preface 今天我期盼已久的两本书终于到了,当京东快递的快递小哥打电话给我的时候,我还是为快递比预期要早几个小时而欢呼雀跃不已,就像是春游前一天的小学生一样,尽管早早睡下,但是却始终难以抑制自己内 ...
- [Effective JavaScript 笔记]第6章:库和API设计--个人总结
前言 又到了一章的总结,这章里的内容.是把我从一个代码的使用者,如何换位成一个代码的编写者.如何让别人用自己的代码更容易,不用去注意太多的无用细节,不用记住冗长的函数名.在使用API时怎样避免使用者会 ...
最新文章
- Ruby中,:(ampersand colon)的用法
- redis 小功能大用处
- 快速排序 挖坑_由浅入深玩转快速排序算法
- div css左边固定右边自适应布局
- c windows system32安装mysql_Windows下MySQL8社区版安装
- IntelliJ IDEA导包快捷键以及创建方法
- SSM框架实战详细教程(六)Spring MVC贯穿项目实战
- 盘点:光通信的五个发展趋势
- frp穿透你的远程桌面
- Java设计一个测桃花模块_20145209刘一阳《JAVA程序设计》第一周课堂测试
- html 纵向滚动条,css设置纵向滚动条
- Udacity Sparkify项目
- 2019 - 02 typescript的学习(结合cocos creator)
- NKOJ3685 8数
- 最新版 Office 三国杀,体验式寻找最强电子表格
- html字体由粗变细的方法,CSS 让 fontawesome 图标字体变细(示例代码)
- Java在ACM中的使用
- 打开u盘时出现“文件或目录损坏且无法读取“怎么解决
- 《小额贷款操作系统》MVC文献
- 监控--Prometheus
热门文章
- 依赖反转原理,IoC容器和依赖注入:第1部分
- Odoo10参考系列--Odoo指导方针
- hibernate整合mysql配置文件_springboot整合hibernate配置
- bootstraptable 怎么在特定行添加数据_同等权限下多任职之间数据权限的实例
- 16c语言第七届省赛,第十二届全国青少年信息学奥林匹克联赛初赛试题及答案普及组、C语言...
- 清空本地_PyQt5播放实时视频流或本地视频文件
- arch linux rpm格式,如何在ArchLinux上安装RPM包
- mysql的socket文件下载,mysql下的socket文件作用
- git项目初始上传服务器,快速架设一个使用 SSH 的 Git 服务
- oracle 统计文本字符串,oracle人员权限,字符串转列,统计管理详解-Oracle