C++编程规范101规则、准则与最佳实践 二
命名空间与模块 将类型及其成员函数接口置于同一命令空间中 如果要将非成员函数(特别是操作符和辅助函数)设计成类X的接口的一部分,那么就必须在与X相同的命名空间中定义它们,以便正确调用。 应该将类型和函数分别置于不同的命名空间,除非有意让它们一起工作 不要在头文件或者include...
命名空间与模块 将类型及其成员函数接口置于同一命令空间中 如果要将非成员函数(特别是操作符和辅助函数)设计成类X的接口的一部分,那么就必须在与X相同的命名空间中定义它们,以便正确调用。 应该将类型和函数分别置于不同的命名空间,除非有意让它们一起工作 不要在头文件或者include...
组织与策略 不拘泥小节 大括号位置 空格和制表符 匈牙利记法 单入口,单出口 高警告级别 第三方头文件 未使用的函数参数 定义了从未使用过的变量 变量使用前可能未经初始化 遗漏了return语句 有符号数、无符号数不匹配 自动构建系统 增量构建 完全构建 版本控制系统 版本空值系...
新的改变 nullptr 在C++11中,nullptr是一个所谓“指针空值类型”的常量。 nullptr类型数据所占用的内存空间大小和void*是相同的。 nullptr和(void*)0 前者是一个编译时期常量 后者只是一个强制转换表达式,返回的也是一个void*指针类型。 ...
常用特殊 静态类型动态类型 主要区别在于对类型进行检查的时间点。 对于所谓的静态类型,类型检查主要发生在编译阶段。 对于动态类型,类型检查主要发生在运行阶段(和类型推导相关)。 auto auto声明变量的类型必须由编译器在编译时期推导而得。 auto声明的变量必须被初始化,以使...
使用 CRegexpT 正则表达式,'\0'结束的。 表达匹配模式。 CRegexpT::Compile 正则表达式,'\0'结束的。 表达匹配模式。 CRegexpT::MatchExact 精确匹配。 tstring字符串,使用 \0 作为结束标志。 返回匹配结果 Match...
兼容性 预定义宏 __STDC_HOSTED__ 如果编译器的目标系统环境中包含完整的C库,那么这个宏就定义为1,否则值为0. __STDC__ C编译器通常用这个宏的值来表示编译器的实现是否与C标准一致。 C++11标准中这个宏是否定义以及定义成什么值由编译器决定。 __STD...
函数与回调 ref 包装对象的引用,在传递参数时消除对象拷贝的代价,或者将不可拷贝的对象变为可以拷贝。 reference_wrapper boost::cref boost::ref unwrap_ref bind 适配任意的可调用对象,如函数指针、函数引用、成员函数指针、函数...
array dynamic_bitset test:第n位是否为1 any:如果存在1,返回true none:不存在1,返回true count:容器中所有值为1的元素的数量 set:置全部或特定的位置值为1或0 reset:置全部或特定位置的值为0 flip:反转全部或特定位...
noncopyable 实现一个禁止拷贝的类。 实现 使用 ignore_unused 让暂时用不到又必须保留的变量在编译时不报警告。 实现 用法 optional 常量 函数 optional:构造未初始化的对象。 optional(v):构造初始化的对象。 optional(...
timer timer 毫秒级别的精度。 <boost/timer.hpp> using namespace boost; progress_timer 派生自timer。 会在析构时自动输出流逝的时间。 <boost/progress.hpp> usin...