很弱的关于const的问题
问题如下:
const int *p1=null;
int *p2=null;
p1=p2; //编译通过OK
//-----------分割--------------
const int **p3=null;
int **p4=null;
p3=p4; //编译出错-error C2440: “=”: 无法从“int **”转换为“const int **”
求解释,为何第二点编译会出错?
编译器这样处理的原因是什么?(请帮忙结合第一点分析一下)
[解决办法]
我的,打字太快没注意。 C++有类型检查.. 2者类型不一样。
[解决办法]
其实也不是说类型不同就不能,要看能不能转化:如果函数的参数是const,它可以接受非 const 变量的实参的,无非在此函数内部不会有修改它的动作而已,但如果形参是非const,你把一个const的实参传给它,编译器会报错的,因为形参为非const会让编译器认为函数内部会有修改它的操作(即便其实没有修改操作),所以就不能接受const的实参。