Effective Modern C++笔记

零. 绪论

  • 左值和右值
    • 概念上,右值对应的是函数返回的临时对象,左值对应的是可指涉的对象(通过名字、指针或左值引用)
    • 甄别方式:能取得地址的为左值。
    • 右值引用类型的形参,该形参本身也是左值。
      • 任何形参都是左值
    • 若某对象是依据同一类型的另一对象初始化出来的,则该新对象称为原对象的一个副本。右值的副本通常由移动构造函数创建,左值的副本通常由复制构造函数创建。
阅读更多

Effective C++笔记

01:把c++视为一个语言联邦

02:尽量以const, enum, inline替代#define

1. 对于单纯变量,最好用const对象或enum替换#define

​ #define由预处理器进行处理,因此可能不被编译器看见。当获得编译器错误信息时无法追踪(通过#define定义的变量可能未进入记号表)。而使用const对象则不会出现这样的问题。

​ 并且,#define无法限制作用域。当需要定义class的专属常量时,可以通过const定义,并且为了保证此常量至多一个实体,可以将其定义为static类型。

阅读更多