注册 登录
编程论坛 C++教室

运算符重载的问题,求助

shenyulv 发布于 2009-11-12 21:51, 729 次点击
#include "iostream"
using namespace std;
class Counter
{
public:
    Counter(){value=0;}
    Counter(int i){value=i;}
    Counter operator++();
    Counter operator++(int);
    Counter operator--();
    Counter operator--(int);
    void display() {cout<<value<<endl;}
private:
    unsigned value;
 };
Counter Counter::operator++()
{
    value++;
    return*this; //这个是什么意思?*this 是指哪个?
}
Counter Counter::operator++(int)
{
    Counter temp;
    temp.value=value++;
    return temp;
}
Counter Counter::operator--()
{
    value--;
    return*this;
}
Counter Counter::operator--(int)
{
    Counter temp;
    temp.value=value--;
    return temp;
}
int main()
{
    Counter n(10),c;
    c=++n;
    cout<<"前缀++运算符计算结果:"<<endl;
    cout<<"n=",n.display();
    cout<<"c=",c.display();
    c=n++;
    cout<<"后缀++运算符计算结果:"<<endl;
    cout<<"n=",n.display();
    cout<<"c=",c.display();
    c=--n;
    cout<<"前缀--运算符计算结果:"<<endl;
    cout<<"n=",n.display();
    cout<<"c=",c.display();
    c=n--;
    cout<<"后缀--运算符计算结果:"<<endl;
    cout<<"n=",n.display();
    cout<<"c=",c.display();
return 0;
}


6 回复
#2
dadongzicool2009-11-12 22:12
应该是指当前对象吧  就像那个temp是一个显示的对象一样  这个没有显示声明一个对象 是隐式的
#3
qlc002009-11-12 22:37
它是一个隐式指针,指向当前对象的!
假如说++n,*this就表示的是n.operator++()
#4
blowing002009-11-12 23:53
this指针是成员函数特有的指针,它指向的是调用它的对象,你这个程序里调用它的是n,this就指向n.*this就是n.
#5
一旋无风2009-11-13 00:48
它是一个隐式指针,指向当前对象的!
#6
shenyulv2009-11-13 11:58
吼吼,谢谢咯
#7
flyingcloude2009-11-13 12:28
this是隐私指针,在类的各个成员函数中都可以调用
1