指向const 对象的指针可以给指向non-const对象的指针初始化,反之不行。
从逻辑上分析,指向non-const对象的指针意味着可修改对象,如果强行给其赋值一个const 对象指针,那么如果可以,就会导致通过non-const对象指针修改const对象,这显然违背了逻辑。
int a = 1;
const int *p = &a;
int *p2 = &a;
p = p2; //没有任何问题
p2 = p; //编译报错
指向const 对象的指针可以给指向non-const对象的指针初始化,反之不行。
从逻辑上分析,指向non-const对象的指针意味着可修改对象,如果强行给其赋值一个const 对象指针,那么如果可以,就会导致通过non-const对象指针修改const对象,这显然违背了逻辑。
int a = 1;
const int *p = &a;
int *p2 = &a;
p = p2; //没有任何问题
p2 = p; //编译报错