假设你有
class Something
{
int nVal1;
public:
Something(int x = 0) { nVal1 = x }
Something& operator++()
{
if (nVal1 == 9)
nVal1 = 0;
else
++nVal1;
return *this;
}
};
int main()
{
Something test3;
++test3;
}
我还是C ++的新手,如果我错了,请纠正我。 this
指针返回对调用重载operator++
的对象的引用。 ++nVal1
是成员函数的本地函数,但因为它是对test3
对象的状态进行操作的成员函数,所以nVal1
的值不会更改,除非重新分配或对象被毁了?此外,当返回*this
时,它是否将更改返回给对象?
Something object(test3 address)
随着状态的变化?据我所知,Classes允许您创建自己的数据类型和存储数据。我认为我最大的困惑是返回的功能是什么以及发送它的位置。它是否会覆盖该对象的先前状态?
答案 0 :(得分:0)
但是因为它是一个对test3对象的状态进行操作的成员函数,除非重新分配或者对象被销毁,否则nVal1的值不会改变?
当您在nVal1
上致电operator++()
时,Something
的价值会发生变化。您还要返回新值的事实与您对nVal1
执行的更改无关。
operator++()
的语义,在通用对象i
上,只需要返回新值,以便行为,例如:
std::cout << (++i);
已定义。
但是,即使您只是调用它并忽略结果,例如在main
中,该值仍会被更改。
答案 1 :(得分:0)
正如所写的那样,当test3.nVal1
被调用时,代码将会更改operator++()
- 我不确定为什么你认为它不会。 *this
的返回是一些运算符允许链接的模式;例如++(++test3)
,或者允许增量的结果,例如,传递给另一个函数,例如被分配给另一个Something
;例如
Something test4 = ++test3;