1

クラスで行ったこの例を理解しようとしていますが、問題があります...

クラス Time の場合、このクラスのインスタンスは時間、分、秒で構成されます

そう

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 の 1 つのパラメーター labStart のみが渡されるため、t2.mins t2.sec は labStarts の分と秒 (それぞれ 30 分と 0 秒) を占めますが、labEnd の変数 (12,20,0) はどこにありますか? ?? (インスタンス変数時間、分、秒)??

4

2 に答える 2

2

あなたの関数thisにはへのポインタ&labEndです。裸のsecsmins、およびhrsメンションには、this->それらの前に暗黙があります。を明示的に書き出すとthis->、3 つの変数宣言は次のようになります。

int s = this->secs - t2.secs;
int m = this->mins - t2.mins - borrow;
int h = this->hrs  - t2.hrs  - borrow;
于 2013-10-25T03:38:51.917 に答える
0
labEnd - labStart

次と同等です。

labEnd.operator -(labStart)

メンバー関数labEndthis同様で、そのメンバー変数は通常の変数のようにアクセスできます。

于 2013-10-25T03:41:47.433 に答える