我试图了解我们在类里面做过的这个例子,但是遇到了一些麻烦...

对于时间类,该类的实例由小时,分钟和秒组成

所以

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的分钟和秒数(分别为30分钟和0秒),但是labEnd的变量在哪里(12,20,0) ?? (实例变量小时,分钟,秒)?

最佳答案

在您的函数中this是指向&labEnd的指针。裸secsminshrs提及的内容在它们前面都有一个隐式this->。如果显式写出this->,则三个变量声明变为:

int s = this->secs - t2.secs;
int m = this->mins - t2.mins - borrow;
int h = this->hrs  - t2.hrs  - borrow;

关于c++ - 了解c++类和函数调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19580637/

10-10 22:19