64,682
社区成员
发帖
与我相关
我的任务
分享
#include <iostream.h>
class counter
{
public:
counter() {v=0;}
counter operator ++();
counter operator ++(int);
void print() {cout <<v <<endl;}
private:
unsigned v;
};
counter counter::operator ++()
{
v++;
return *this; //直接将当前对象的v增1,
}
counter counter::operator ++(int)//counter counter::operator ++(int) 这个参数“int”好像没用到呀?
//解答:此函数的的int参数主要表示后置递增,以示与前置递增的区别!!
{
counter t; //在“c++”调用该函数时,
t.v = v++; //此处实现了赋值,由于main函数中的c对象的c.v = 8;因此此时t.v = 8;
return t; //问题所在:(一):调用该函数之前,
//c.v已经由0增到8,现在在该函数内新定义一个对象,即默认该对象的t.v是0,那么执行了 //for循环之后 t.v应该也是8呀,(二)c++调用该函数时,c 和t有什么关系呀?
}
void main()
{
counter c;
for(int i=0;i <8;i++)
++c; //调用counter counter::operator ++()
c.print(); //使c.v从0加到8
for(i=0;i <8;i++)
c++; //调用 counter counter::operator ++(int) 这个参数“int”好像没用到呀?
c.print();
}