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

小问题请教:

marenshi 发布于 2010-05-28 16:48, 604 次点击
Time Time::operator ++(int)
{Time t(*this);//?
sec++;
if(sec>=60)
{sec-=60;
++minute;
}
return t;
}
教材上的例子,这段没注释,高手指教。谢谢!
9 回复
#2
bccn2502010-05-28 17:06
程序代码:
Time Time::operator ++(int)
{Time t(*this);    //个人推测应该是:创建一个 Time类的对象 t 并且传当前对象(注意,不是t)给Time类的构造函数,
sec++;
if(sec>=60)
{sec-=60;
++minute;
}
return t;
}
应该是这样,如果有错,楼下请更正
#3
ljt2010-05-28 18:18
#include <iostream.h>
class A
{
    int money;
public:
    A(int m){money=m;cout<<money<<endl;}
    A(A&){cout<<"拷贝构造函数"<<endl;}
    void boss()
    {
        A a(*this);
        cout<<"dfdfs";
    }
};
void main()
{
    A b(5);
    b.boss();
}
你运行一下,看下结果就知道了
#4
2010-05-28 19:27
Time Time::operator ++(int)//定义运算符重载函数
{Time t(*this);//this是指向调用++运算符函数对象的指针,*this是调用++运算符函数的对象,用*this初始化一个新的Time对象。
sec++;//秒加1
if(sec>=60)
{sec-=60;//如果秒数大于60,那么就sec=sec-60
++minute;//因为秒大于60,多以分钟就该加1分钟
}
return t;
}
#5
gaoce2272010-05-28 19:29
看不懂,知道是个重载运算符。但什么t,t和sec,min也没什联系啊。

[ 本帖最后由 gaoce227 于 2010-5-28 19:32 编辑 ]
#6
laigaoat20052010-05-28 19:43
Time Time::operator ++(int)//定义运算符重载函数  operator和++间应该没有空格吧?
{Time t(*this);//this是指向调用++运算符函数对象的指针,*this是调用++运算符函数的对象,用*this初始化一个新的Time对象。
sec++;//秒加1
if(sec>=60)
{sec-=60;//如果秒数大于或等于60,那么就sec=sec-60
++minute;//因为秒大于60,多以分钟就该加1分钟
}
return t;
}
#7
gaoce2272010-05-28 19:51
以下是引用marenshi在2010-5-28 16:48:14的发言:

Time Time::operator ++(int)
{Time temp(*this);//定义临时对象,this指针隐含着:(*this).sec,(*this).->min.分别完成++后置运算,即完
sec++;            //成临时对象temp的后置++运算。
if(sec>=60)
{sec-=60;
++minute;
}
return temp;
}
教材上的例子,这段没注释,高手指教。谢谢!
老兄看书好仔细,但要结合前面看。
#8
南国利剑2010-05-30 01:15
回复 2楼 bccn250
你的猜测是正确的。
就是这个意思了。
#9
南国利剑2010-05-30 01:15
以下是引用bccn250在2010-5-28 17:06:42的发言:

Time Time::operator ++(int)
{Time t(*this);    //个人推测应该是:创建一个 Time类的对象 t 并且传当前对象(注意,不是t)给Time类的构造函数,
sec++;
if(sec>=60)
{sec-=60;
++minute;
}
return t;
}应该是这样,如果有错,楼下请更正
#10
marenshi2010-05-30 20:03
谢谢各位:我明白了!
1