1、对于指针*,声明或者定义的时候,表示变量为指针。在其他的地方,如果是单目操作,表示对指针解引用,如果是双目操作,表示乘法。
2、对于引用&,声明或者定义的时候,表示变量为引用。在其他的地方,如果是单目操作,表示取地址,如果是双目操作,表示按位与。
3、声明或者定义指针的时候,*可以紧靠类型,也可以紧靠变量,二者是等价的。但是推荐的编码风格是,紧靠变量。为什么?
a、紧靠类型,会产生错觉。比如int* i, j; 有些人会认为定义了i,j两个int指针。而实际情况是i是int指针,j是int变量。使用int *i, j; 可以避免产生这种错觉。
b、考虑指向成员的指针,从封装的角度看,类也是一个命名空间。正确的写法是int Animal::*pi; 而不是int* Animal::pi,这也说明*与变量关系更密切,应该紧靠在一起。
4、对于引用&,声明或者定义的时候,也应该紧靠变量。