c++访问私有变量问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 15:49:43
class B
{public:
int f(){return b;}
private:
int b;
};
void main()
{B b1;
b1.b=5;
cout<<c1.f();
}
b1.b不正确,因为b是私有变量,我知道可以*(int *)&b1=5;这样改,请问这个表达式等号前面如何解释.还有,b1.f()=5;这种为什么不行,而打印时可以这样用.编译器报错,意思是等号左边不是一个value值.

表达式等号左边的必须是一个左值,也就是一个可以得到地址,对它赋值的变量, int f()返回的是临时变量,不是左值 int& f(){return b)就可以了

我认为: *(int *)&b1=5中&b1为b1的地址,(int*)&b将其强制转化正int*型,然后,将(int *)&b1看成int型指针,然后,在*来求其值或赋值。只能明白这点了,呵呵