我试图理解我们在课堂上做的这个例子,但遇到了一些麻烦...
对于类Time,此类的实例由hrs,mins secs
组成所以
Time labStart(10,30,0);
Time labEnd (12,20,0);
(labEnd-labStart).printTime() //I'm not concerned with the printTime function
const Time Time::operator - (const Time& t2) const {
int borrow=0;
int s=secs-t2.secs;
if (s<0) {
s+=60;
borrow=1;
}
int m=mins-t2.mins2-borrow;
if (m<0) {
m+=60;
borrow=1;
}
else
borrow=0;
int h= hrs-t2.hrs-borrow;
if (h<0) {
h+=24;
Time tmp=Time(h,m,s);
return tmp;
}
因此,如果我们通过labEnd和labStart,我被告知(labEnd-labStart)~labEnd.operator-(labStart)
我不明白如何以及在何处考虑labEnd的变量?在上面的函数中,只有一个Time参数传入labStart,所以t2.mins t2.sec占了labStarts mins和secs(分别为30分钟和0秒),但是labEnd的变量在哪里(12, 20,0)?? (实例变量小时,分钟,秒)??
答案 0 :(得分:2)
在您的函数中this
是指向&labEnd
的指针。裸secs
,mins
和hrs
提及前面有一个隐含的this->
。如果你明确地写出this->
,则三个变量声明变为:
int s = this->secs - t2.secs;
int m = this->mins - t2.mins - borrow;
int h = this->hrs - t2.hrs - borrow;
答案 1 :(得分:0)
labEnd - labStart
相当于:
labEnd.operator -(labStart)
因此labEnd
在成员函数中是this
,并且可以像访问普通变量一样访问其成员变量。