先上一段代码:
#include <iostream> using namespace std; int main(void) { int a = 1; const int *p = NULL; p = &a; int *q = p; // 错误 // error C2440: 'initializing' : cannot convert from 'const int *' to 'int *' // Conversion loses qualifiers q = &a; // (1) q = (int *)p; // 强制类型转换,可以 return 0; }
这里定义的 p 的要求是:(*p)不能变,p能变。(我想就这点意思了吧?)
可为什么p不能赋给q呢?出现的错误是C2440。
我猜这里的解释是,既然(*p)不能变,那么它(p)也试图不让它“生成”的指针(q)来改变它所指向的值(*p),但是以合法的方式(1)不也可以实现这个功能吗?
(p.s.强制类型转换也可以)
你有何高见?