面试题答案
一键面试在C++中设计构造函数重载时,为确保不同参数组合的构造函数能够合理地初始化对象成员变量,需要针对每种参数组合,在构造函数体中或使用初始化列表对成员变量进行恰当的赋值。使用初始化列表通常更高效,因为它直接在对象创建时初始化成员变量,而不是先默认初始化再赋值。
示例代码如下:
class Rectangle {
private:
int width;
int height;
public:
// 无参数构造函数,将宽和高初始化为0
Rectangle() : width(0), height(0) {}
// 单参数构造函数,将宽和高初始化为相同值
Rectangle(int side) : width(side), height(side) {}
// 双参数构造函数,分别初始化宽和高
Rectangle(int w, int h) : width(w), height(h) {}
// 打印矩形尺寸的函数
void printDimensions() {
std::cout << "Width: " << width << ", Height: " << height << std::endl;
}
};
在上述示例中:
Rectangle()
是无参数构造函数,它将width
和height
都初始化为0,适用于需要先创建一个默认矩形对象的场景。Rectangle(int side)
是单参数构造函数,它将width
和height
都初始化为传入的side
值,适用于创建正方形矩形的场景。Rectangle(int w, int h)
是双参数构造函数,它分别使用传入的w
和h
值初始化width
和height
,适用于需要自定义矩形宽高的场景。