请问int *p = (int *)&x是什么意思?
class A
{
public:
int x;
void f() const
{
int *p =(int *)&x;//这里(int *)&x什么意思呢? 它与int *p=&x; 有什么区别?
// int *p = &x;
(*p)++;
cout < < x < <endl;
}
};
上面定义的这个类中的const函数f()可以通过 int *p=(int *)&x;来修改x的值,我不明白(int *)&x的含义,而且它与int *p=&x有什么区别? 当我改为int *p=&x 时就出现编译错误 "cannot convert from 'const int *__w64 ' to 'int * ' "
[解决办法]
这是因为在const成员函数f()里面,要保证成员变量不被修改,所以系统自动为x加上了const修饰,即x现在相当于const int x,所以现在&x相当于const int*类型,这时用int*p=const int*当然是错的.因此该题目中用(int*)&x把&x的类型强制转换成了int *类型,来保证用int *p能接收
[解决办法]
强制性类型转换 常量转化成非常量一般用 const_cast <int *> (&x)更合适