📅  最后修改于: 2023-12-03 15:29:42.456000             🧑  作者: Mango
在 C++ 中,构造函数用于初始化对象的属性或成员变量。在对象被创建时,构造函数自动调用,并执行所需的初始化操作。本文将讨论一个常见的构造函数问题:如何编写一个构造函数,使其能够接受不同类型的参数并正确初始化对象。
考虑一个名为 Rectangle
的类,该类表示一个矩形。这个类包含以下数据成员:
width
:矩形的宽度height
:矩形的高度现在,假设要编写一个构造函数,使其能够接受以下两种类型的参数:
你该如何编写这样一个构造函数?
一个可能的解决方案是编写两个构造函数,分别接受两个整数和一个整数参数。这两个构造函数可以使用默认参数来避免出现代码重复。
class Rectangle {
int width, height;
public:
Rectangle(int w, int h = 0) {
width = w;
height = h ? h : w; // 如果h为0,将height设置为w,否则设置为h
}
};
这个构造函数的作用如下:
h
参数未提供,将 height
设置为 0
。h
参数提供了一个非零的值,将 height
设置为它。h
参数提供了一个零值,将 height
设置为与 width
相等的值。这个构造函数使用了三目运算符来避免出现分支语句。这个构造函数能够正确地处理这两种情况:
Rectangle rect1(10, 20); // 宽度10,高度20
Rectangle rect2(10); // 宽度10,高度10
构造函数是用于初始化 C++ 对象的关键部分。在本文中,我们讨论了如何编写一个接受不同类型参数的构造函数,以初始化矩形对象的属性。使用默认参数和三目运算符,我们成功地实现了这个目标。
如果有任何问题或建议,请在评论中留言。