0

割り当てシートから直接質問を入力します。問題全体の正確なコードを探しているわけではありません。オーバーロードされた演算子を理解するのに助けが必要ですが、オーバーロードされた + 数学演算子の構文例は有益です。ここに問題があります...

*は、私が知る限り完全であることを示します。

***Time クラスには、2 つの整数メンバー変数 (Hour と Minute)、ミューテーター関数 setHour と setMinute、およびアクセサー関数 getHour と getMinute が含まれます。これらの関数はインラインにする必要があります。

*** time クラスには、2 つのコンストラクタと 1 つのデストラクタも含める必要があります。デフォルトのコンストラクターは、時間と分を 0 に初期化し、「Hello from the Default Constructor」というメッセージを表示する必要があります。2 番目のコンストラクターは、時間と分に値を割り当てる必要があります。デストラクタは、「デストラクタからさようなら」というメッセージを表示する必要があります。これらの関数もインラインにする必要があります。

ここで、時間と分の量を加算および減算するために、標準 + 数学演算子をオーバーロードする operator + 関数と、標準 - 数学演算子をオーバーロードする operator - 関数を追加します。***59 より大きい分または 0 より小さい分の値をチェックし、それに応じて時間に応じて処理する単純化関数をすべて追加する必要があります。例 2 は時で 65 分で、3 は時で 5 は分になります。これらの関数はインラインにしないでください。

メイン プログラムは 3 つの Time オブジェクト (time1、time2、time3) を作成します。ユーザーは、1 番目と 2 番目のオブジェクトに格納される 2 つの時間を入力するよう求められます。次に、1 番目と 2 番目のオブジェクトが加算され、3 番目のオブジェクトに配置されてから表示されます。次に、減算されて 3 番目のオブジェクトに配置されてから表示されます。3 番目のオブジェクト宣言で既定のコンストラクターを使用し、1 番目と 2 番目のオブジェクト宣言でオーバーロードされたコンストラクターを使用します。

*課題の終了*****

*スタートコード*****

#include<iostream>
#include<cstdlib>
using namespace std;

class TIME 
{
private:
int min;
int hour;


public:

void tickTime();
void simplify();
TIME operator +();
TIME operator -();

TIME()
{
    min = 0;
    hour = 0;
    cout << "Hello!!! From constructor\n";
}


TIME(int h, int m)
{
    hour = h;
    min = m;
}


~TIME()
{
    cout << "Goodbye!!! From destructor.\n";
    system("pause");
}

void setMin ( int m )
{
min = m;

}


void setHour (int h)
{
hour = h;
}


int getMin() const
{
return min;
}


int getHour() const
{
return hour;
}
};
void TIME :: tickTime()
{
min++;
if (min>59)
{
    min=00;
    hour++;
    if (hour>23)
        hour = 00;
}
return;
}

void TIME :: simplify()
{
{
if (min>=60)
{
    hour += (min/60);
    min = min % 60;
}
else if (min < 0)
{
    hour -= ((abs(min) / 60) + 1);
    min = 60 - (abs(min) % 60);
}


    if (hour>23)
        hour = 00;
}
return;
}


TIME TIME:: operator+()
{


return;
}

TIME TIME:: operator-()
{


return;
}

int main()
{
int min, hour;
TIME t;
int i, h, m;

cout << "Enter Hour: ";
cin >> h;
cout << "Enter Minute: ";
cin >> m;

t.setHour(h);
t.setMin(m);

cout << endl << endl;

for (i=1; i<=5; i++)
{
    t.simplify();
    t.tickTime();
cout << t.getHour() << ":" << t.getMin() << endl << endl;
}

system("pause");
return 0;
}

***終了コード***

**現在のサンプル出力*** こんにちは!!! コンストラクターから Hour: 9 を入力 分: 29 を入力

9:30

9:31

9:32

9:33

9:34

何かキーを押すと続行します 。. . さようなら!!!デストラクタから。何かキーを押すと続行します 。. . ***サンプル出力の終わり***

助けてくれてありがとう、私は本当にオーバーロードを理解していません。オブジェクトやその他すべての楽しいものを理解できると思います。

4

2 に答える 2

0

実装は次のようになります:-

TIME TIME::operator+(TIME const& rhs) const
{
   TIME res;
   res.hour = this->hour + rhs.hour;
   res.min = this->min + rhs.min;
   return res;
}

TIME TIME::operator-(TIME const& rhs) const
{
   TIME res;
   res.hour = this->hour - rhs.hour;
   res.min = this->min - rhs.min;

   return res;
}

ここで、「これ」は LHS 上のオブジェクトです。

于 2014-05-01T07:39:13.643 に答える
0

TIME2 つのオブジェクトを追加し、別のオブジェクトからオブジェクトを減算するためのオーバーロード演算子TIME:

  TIME operator+(TIME const& rhs) const;
  TIME operator-(TIME const& rhs) const;

constメンバー関数と引数が必要なのは、TIME const&次の場合です。

  TIME c = a + b;

abconstオブジェクトの場合に対処できるようにしたいと考えています。

実装では:

TIME TIME::operator+(TIME const& rhs) const
{
   TIME res;
   // Compute the resultant
   // ...

   // Return the resultant
   return res;
}

TIME TIME::operator-(TIME const& rhs) const
{
   TIME res;
   // Compute the resultant
   // ...

   // Return the resultant
   return res;
}

のインスタンスを加算および減算できるようになりTIMEました。

于 2014-05-01T02:59:20.193 に答える