-
值得一提的使用到的现代C++特性
- C++11 的移动语义
- C++14 标准下的智能指针
-
执行
./start.sh
即可简单运行程序的一个样例 -
debug.sh
是在终端启用gdb
调试的,不建议使用 -
JSON_O3
顾名思义,是GCC 12.2.0
版本开O3优化编译得到的 -
json.h
中定义了解释器的API -
parser.h
中定义了解析文本的类和相关方法 -
很多API就是练习,可能并没有被完全利用到,具体细节可以进一步调整
- 注: 一些移动构造函数可能在编译器返回值优化时被选择到,具体我还没有太弄清楚
- 尽量不使用
#define
- 尽可能的使用
const
- 了解C++默认生成的函数
- 不必要的特种成员函数明确禁止
- 为多态基类声明
virtual
析构函数 - 不要在构造和析构函数中调用
virtual
函数 - 析构函数不要抛出异常
- 对象复制勿忘每一个成分(如:基类中的资源)
operator=
应该返回自身引用const
引用传递优于按值传递- 当所有的参数都需要类型转换时,将函数定义为非成员函数
- 用对象来管理资源
- 尽可能使用
std::unique_ptr
,必要时使用std::shared_ptr
- 了解 RAII(Resource Acquisition Is Initialization)对象的拷贝行为
- 资源管理类中提供对原始资源的访问
- 使用C++提供的cast而不是原始的C风格强制类型转换
new
和delete
要使用相同形式- 使用新的类型让接口不易被误用