[C++]const、typedef联合使用注意
const和typedef在C++使用是非常频繁,各自的使用方式本来就很多,当它们两个同时
使用来进行定义的时候,可能会出现一些误解,下面举例说明这一点。
typedef char * pStr; char string[4] = "abc"; const char *p1 = string; const pStr p2 = string; p1++; p2++;
编译时p2++出错了。这个问题再一次提醒我们:typedef和#define不同,它不是简单的文本替换。
const pStr p2 等价于 char *constp1 ,pStr被typedef定义为了一个char *类型,即pStr是一个
字符指针类型,那么const pStr p2中的const修饰的就是字符指针(p2),而不是对象(*p2)。
所以const pStr p2 也可以写成pStr const p2。
在我们平时阅读的C++程序中,习惯看到的是const放在类型的前面。于是为了遵照惯例,只好建议
编程时把const放在类型前面。但是,把声明语句重写为置const于类型之后更便于理解。