MST

星途 面试题库

面试题:C++ 中构造函数重载的设计要点

请阐述在 C++ 中设计构造函数重载时,如何确保不同参数组合的构造函数能够合理地初始化对象成员变量,并举出一个包含至少两个不同参数组合构造函数的类示例,说明每个构造函数的作用。
48.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

在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() 是无参数构造函数,它将 widthheight 都初始化为0,适用于需要先创建一个默认矩形对象的场景。
  • Rectangle(int side) 是单参数构造函数,它将 widthheight 都初始化为传入的 side 值,适用于创建正方形矩形的场景。
  • Rectangle(int w, int h) 是双参数构造函数,它分别使用传入的 wh 值初始化 widthheight,适用于需要自定义矩形宽高的场景。