【发布时间】:2016-10-13 01:32:40
【问题描述】:
我是 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;
}
这两种方式不完全一样吗?他不就是为了让代码更紧凑而使用特殊的运算符吗?
【问题讨论】:
-
教师的代码允许
-5中的vert,但您的代码会将其转换为+5。 -
@aschepler 我用 -5 试过了,但效果也不错。
标签: c++ class object constructor explicit