cmakelist编译的时候打开wall
对一些语法进行检查 set(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -fPIC -Wall”)
类的初始化列表要按照类定义的顺序执行初始化
有返回值的函数一定要返回
size_t和int类型的比较消除
static_cast
在h文件中,用前向声明替换 头文件 对象定义成指针或引用,在cpp包含头文件
前向声明的好处 1 加快编译的速度 2 编译的时候避免互相依赖,减少头文件的暴露,在做接口实现的时候是必须的
指针统一用智能指针,不用裸指针进行new delete操作
提供单例的宏对象展开
#define DECLARE_SINGLETON(classname) \
public: \
static classname *Instance(bool create_if_needed = true) { \
static classname *instance = nullptr; \
if (!instance && create_if_needed) { \
static std::once_flag flag; \
std::call_once(flag, \
[&] { instance = new (std::nothrow) classname(); }); \
} \
return instance; \
} \
\
static void CleanUp() { \
auto instance = Instance(false); \
if (instance != nullptr) { \
CallShutdown(instance); \
} \
} \
\
private: \
classname(); \
DISALLOW_COPY_AND_ASSIGN(classname)