先上一段代码:
#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.强制类型转换也可以)
你有何高见?
本文详细解析了C++中const指针与普通指针赋值的区别,通过实例代码解释了const指针无法直接赋值给普通指针的原因,以及如何通过强制类型转换实现这一操作。文章深入探讨了C++中指针类型的高级用法,为读者提供了一种灵活管理资源的方法。
5003

被折叠的 条评论
为什么被折叠?



