0
有人可以告诉,在这段代码中,如何声明构造函数,使得当对象被实例化时,height被初始化为传递值,而width始终是默认值(在下面的情况下为2)。构造函数中的成员初始化
class rectangle{
int width, height;
public:
// rectangle(int w = 1, int h = 1): width(w), height(h){}
rectangle(int w = 2, int h=1): width(w) {height = h;}
int getW(){return width;}
int getH(){return height;}
};
int main()
{
rectangle r1(1);
rectangle r2(2);
rectangle r3(4);
rectangle r4(5);
cout << "w = " << r1.getW() <<" h = " << r1.getH() << endl;
cout << "w = " << r2.getW() <<" h = " << r2.getH() << endl;
cout << "w = " << r3.getW() <<" h = " << r3.getH() << endl;
cout << "w = " << r4.getW() <<" h = " << r4.getH() << endl;
}
Output with above code:
w = 1 h = 1
w = 2 h = 1
w = 4 h = 1
w = 5 h = 1
有人可以告诉我如何声明构造函数,以便输出如下(我想声明只有一个参数的对象)?
w = 1 h = 1
w = 1 h = 2
w = 1 h = 4
w = 1 h = 5
感谢本杰明,你是正确的,我的措辞是混乱的。我正在从一个在线讲座系列中学习,并且真的很想了解成员如何初始化,所以这主要是一个理论练习。一般来说,我想学习的是当有多个参数时,如何使用默认值初始化第一个参数(本例中为宽度)。我所有的构造函数组合似乎都将这个值传递给了宽度,在默认情况下保持高度。那有意义吗? – kaushal
@ kaushal98:是的,这是有道理的。但是,这不可能,只有一个功能。然而,你可以用多个重载来模拟它,这就是我的答案所展现的。 –
@Banjamin:抱歉不小心删除了我之前的评论。我想这是不可能的,甚至是愚蠢的,但我仍然想确认。我们能否定义这样的结构,使得当像矩形r1(1),r2(2),r1设置w和r2设置h时实例化? – kaushal