私はC++を初めて使っています。私はクラスやオブジェクトについて自分自身を練習しています。私は演算子のオーバーロードを含むプログラムを作りました。それは "明示的なコンストラクタ"を持っています。私はさまざまな値でそれを試してきましたが、それは正常に動作していますが、私の明示的なコンストラクタは、教師の答えとは少し異なります。 先生の答え:明示的なコンストラクタの特別な演算子C++
class Ventilator {
int maxrot;
int rot;
int vert;
bool horiz;
public:
explicit Ventilator(int maxrot=500, int rot=0, int vert=0, int horiz=false): maxrot(abs(maxrot)),
rot(rot<0?0:rot>abs(maxrot)?abs(maxrot):rot), vert(vert<-15||vert>15?0:vert),
horiz(horiz) { }
鉱山は次のとおりです。両方の方法は全く同じ
class Ventillator{
int rotation;
int vertikal;
int maxrot;
int horiz;
public:
explicit Ventillator(int rotation = 10, int maxrot=100, int vertikal = 11, bool horiz = true):
rotation(abs(rotation)), maxrot(abs(maxrot)), vertikal(abs(vertikal)), horiz(horiz){
if (this->rotation > this->maxrot) this->rotation=this->maxrot;
if (this->rotation < 0) this->rotation = 0;
if (this->vertikal <= 15 && this->vertikal >=-15) this->vertikal=vertikal;
else
this->vertikal = 0;
}
ませんか?コードをよりコンパクトにするために特別な演算子を使っているだけではありませんか?
を教師のコードは 'vert'することができますあなたのものは '+ 5 'に変換されます。 – aschepler
@aschepler私は-5でそれを試しましたが、それは同様に動作します。 – specbk