编程论坛
注册
登录
编程论坛
→
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
bccn250
2010-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
ljt
2010-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
gaoce227
2010-05-28 19:29
看不懂,知道是个重载运算符。但什么t,t和sec,min也没什联系啊。
[
本帖最后由 gaoce227 于 2010-5-28 19:32 编辑
]
#6
laigaoat2005
2010-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
gaoce227
2010-05-28 19:51
以下是引用
marenshi
在2010-5-28 16:48:14的发言:
Time Time::operator ++(int)
{Time t
emp
(*this);//
定义临时对象,this指针隐含着:(*this).sec,(*this).->min.分别完成++后置运算,即完
sec++; //成临时对象temp的后置++运算。
if(sec>=60)
{sec-=60;
++minute;
}
return t
emp
;
}
教材上的例子,这段没注释,高手指教。谢谢!
老兄看书好仔细,但要结合前面看。
#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
marenshi
2010-05-30 20:03
谢谢各位:我明白了!
1