在面向对象的语言C++中语句i+=2是如何实现的?

来源:百度知道 编辑:UC知道 时间:2024/06/03 06:09:02
在面向对象的语言C++中语句i+=2是如何实现的?(包括使用的类,对象,传递了哪些消息,谁提供的方法)
十分谢谢各位的回答,不过不要告诉我这是实现自身加2的操作,我知道他是,我现在是想问它实现的机理。而不是这句话是做什么?

i += 2;

+= 就是一个运算符,
i 如果是int型的。那就是内置类型。编译器自己重载了int类的 += 运算符,
如果i 是你自定义的类,那你想使用这个操作符的话就必须在你的自定义类中重载该运算符
如:
class A
{
A& operator +=(const int n);
}
A& A::operator +=(const int n)
{
...
}

没这么复杂+=就是普通的操作符,i+=2就是i=i+2,很简单的运算而已,不涉及你说的那些。

机理的话也就是左值和右值的问题了,左值代表地址,右值代表值,如果i=1的话,i=i+2就相当于i=1+2,i做右值的话编译器会用值代替变量,计算完后把3赋值给i。不知道你是不是想问这个。

不同层次的人问的问题就是不一样,呵呵!

机理就是operator重载。如果定义有operator(I &, int)的话,i+=2就相当于调用operator(i, 2).