1 / 16

C ++编码规范之 C ++的用法

C ++编码规范之 C ++的用法. C ++的用法 . 类型的使用 函数 类的设计和声明 继承 内存分配和释放 初始化和清除 常量 重载. C ++的用法. 操作符 类型转换 友元 模板 表达式和控制流程 宏 异常处理. 类型的使用. 慎用无符号类型 用 typedef 简化程序中的复杂语法 用 enum 取代(一组相关的)常量 尽量用引用代替指针. 函数. 对内置类型参数一般传值 对非内置类型参数应传递引用或指针 若不得不使用参数不确定的函数,采用 <stdarg.h> 提供的方法 若函数返回状态,尝试用枚举做返回类型

Télécharger la présentation

C ++编码规范之 C ++的用法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C++编码规范之C++的用法

  2. C++的用法 • 类型的使用 • 函数 • 类的设计和声明 • 继承 • 内存分配和释放 • 初始化和清除 • 常量 • 重载

  3. C++的用法 • 操作符 • 类型转换 • 友元 • 模板 • 表达式和控制流程 • 宏 • 异常处理

  4. 类型的使用 • 慎用无符号类型 • 用typedef简化程序中的复杂语法 • 用enum取代(一组相关的)常量 • 尽量用引用代替指针

  5. 函数 • 对内置类型参数一般传值 • 对非内置类型参数应传递引用或指针 • 若不得不使用参数不确定的函数,采用<stdarg.h>提供的方法 • 若函数返回状态,尝试用枚举做返回类型 • 函数尽量返回引用 • 若必须返回值,不要强行返回引用 • 禁止成员函数返回成员的引用或指针 • 重复使用的代码用函数代替

  6. 类的设计和声明 • 保持类的不同接口在实现原则上的一致性 • 保持不同类接口在实现原则上的一致性 • 显式禁止编译器自动生成不需要的函数 • 用嵌套类的方法减少全局命名空间类的数量 • 提高类内聚合度,降低类间的耦合度 • 不要在类定义时提供函数体

  7. 继承 • 继承接口和继承实现 (纯虚函数,一般虚函数,非虚函数) • 显式提供继承和访问修饰,显式指出继承的虚函数 • 基类析构函数函数首选是虚函数 • C++分支用法选择,基于值或基于对象类型

  8. 内存 • 谁申请谁释放 • 类消亡时保证指针成员所指堆释放 • 当所指内存被释放后,指针应有一个合理的值 • 给字符串结束符申请空间

  9. 初始化和清除 • 声明即初始化强于使用前才初始化 • 确保构造函数初始化完全 • 尽量使用初始化列表 • 构造函数未结束,对象就没有构造出来 • 让赋值函数返回当前对象的引用(=的用法

  10. 常量和重载 • 类成员可转换成常量形式暴露出来 • 任何变量和成员函数,首选用const修饰 • 避免重载指针和整型类型上

  11. 操作符 • 遵守操作符原义 • 确保自定义操作符能与其他混用 • 操作符需要左值,定义为成员函数;否,作为友元函数 • 后缀操作符 ++(int)前缀++(void)

  12. 类型转换 • 尽量避免强制类型转换。若需,显式转换 • 使用新型类型转换,并保证选择正确 const_cast,dynamic_cast,static_cast • 自定义类最好提供显式转换函数 asInt() 代替 int() • 限制隐式类型转换的类型数

  13. 友元和模板 • 少用友元 • 模板的限制条件要描述清楚 • 模板中应传引用和指针,而非值

  14. 表达式和控制流程 • 尝试用范围比较代替精确比较

  15. • 彻底用常量代替(功能类似的)宏 • 彻底用inline函数代替(功能类似)宏函数 • 用{}把函数宏的函数括起来 • 彻底用typedef代替宏定义新类型 • 不要在公共头文件中定义宏

  16. 异常处理 • 确保代码在异常出现时正确处理 • 注意模板类型可能会破坏异常处理的一些约定 • 当心析构时发生异常 • 捕捉异常时不用先基类后派生类 • 捕捉异常时用引用

More Related