C/C++通用编程重点规范整理
空格
- 使用空格进行缩进,每次缩进4个空格
只允许使用空格(space)进行缩进,每次缩进为 4 个空格。不允许使用Tab符进行缩进。 当前几乎所有的集成开发环
境(IDE)都支持配置将Tab符自动扩展为4空格输入;请配置你的IDE支持使用空格进行缩进。
水平空格
水平空格应该突出关键字和重要信息,每行代码尾部不要加空格。
总体规则如下:
- if, switch, case, do, while, for等关键字之后加空格
- 例如:
if 空格 () 空格 { }
- 例如:
- 小括号内部的两侧,不要加空格;
- 大括号内部两侧有无空格,左右必须保持一致;
- 一元操作符(& * + ‐ ~ !)之后不要加空格;
- 前置和后置的自增、自减(++ --)和变量之间不加空格
- 结构体成员操作符(. ->)前后不加空格
- 逗号(,)前面不加空格,后面增加空格
- 对于模板和类型转换(<>)和类型之间不要添加空格
- 域操作符(::)前后不要添加空格
- 冒号(:)前后根据情况来判断是否要添加空格
- 二元操作符(= + ‐ < > * / % | & ^ <= >= == != )左右两侧加空格
- 三目运算符(? :)符号两侧均需要空格
if / else
1. if 必须使用大括号
2. 禁止if/else/else if写在同一行
指针和引用
1. 指针类型" * ", & 跟随变量名或者类型,不要两边都留有或者都没有空,都可以
类
1. 类访问控制块的声明依次序是 public:, protected:, private:,缩进和 class 关键字对齐
2. 类的成员变量必须显式初始化
3. 必须声明时初始化(C++11),其次构造函数初始化列表
重点规范:
避免隐式转换,将单参数构造函数声明为explicit
1. 单个形式参数的构造函数如果没有用explicit声明,则会成为隐式转换函数
2. explicit组织不应该允许的经过转华构造函数进行的隐式转换的放生
3. explicit用于类型转换操作符重载函数时,阻止隐士向目标类型转换
4. 不可以被子类继承
**C++隐式类型转换:**是从 构造函数形参类型 到 该类类型 的一个编译器的自动转换。
用 单个形参来调用 的构造函数定义了从 形参类型 到 该类类型 的一个隐式转换
https://www.cnblogs.com/QG-whz/p/4472566.html
class Foo {
public:
explicit Foo(const string& name): name(name) {
}
private:
string name;
}