Effective C++ 阅读笔记 01:让自己习惯C++

条款01:视C++为一个语言联邦

请记住

C++高效编程守则视状况而变化,取决于你是用C++的哪一部分。(废话)

我的理解

C++包含四个主要的次语言:

  • C。C++本质上以C为基础。
  • Object-Oriented C++。也就是带有面向对象的部分,构造与析构函数、封装、继承……
  • Template C++。C++的泛型编程部分。
  • STL。程序库,包含容器、迭代器、算法等内容。

条款02:尽量以 const, enum, inline 替换 #define

请记住

  • 对于单纯常量,最好以const对象或enums替换**#defines**。
  • 对于形似函数的宏(macros),最好改用inline函数替换**#defines**。

我的理解

做这些工作的初衷在于,尽量减少预处理器的工作,即使这会增加编译器的工作,这样会方便你的调试,减少出错

条款03:尽可能使用const

请记住

  • 将某些东西声明为const可帮助编译器侦测出错误用法。const可被施加于任何作用域内的对象,函数参数,函数返回类型,成员函数本体。
  • 编译器强制实施bitwise constness,但你编写程序时应该使用conceptual constness
  • 如果const成员函数和non-const成员函数实质等价,令non-const版本调用const版本可避免代码重复。

我的理解

  • const有利于编译器检错
  • 利用mutable关键字,使我们在const函数中同样能够改变某些变量

条款04:确定对象被使用前已先被初始化

请记住

  • 为内置型对象进行手工初始化,因为C++不保证初始化它们。
  • 构造函数使用成员初值列,且次序匹配。
  • 使用local static对象替换non-local static对象。

我的理解

很好理解,用初值列,而不是赋值;将外部对象搬入自己的专属函数,与单例模式的思路相同,确保概之被初始化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值