MST

星途 面试题库

面试题:C++ 类构造函数的重载实现

请编写一个C++类,该类有至少两个不同参数列表的构造函数,展示构造函数的重载。同时,解释构造函数重载的作用以及在调用时如何确定使用哪个构造函数。
35.2万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

class MyClass {
public:
    // 第一个构造函数,带一个int参数
    MyClass(int num) {
        std::cout << "构造函数被调用,参数为: " << num << std::endl;
    }

    // 第二个构造函数,带一个double参数
    MyClass(double num) {
        std::cout << "构造函数被调用,参数为: " << num << std::endl;
    }
};

构造函数重载的作用:

  • 灵活性:使类能够以多种方式进行初始化,满足不同的使用场景。例如,在上述代码中,MyClass类既可以使用int类型的数据初始化,也可以使用double类型的数据初始化,方便了用户根据实际需求选择合适的初始化方式。
  • 代码简洁:避免了为不同初始化方式创建多个不同的初始化函数,而是通过不同参数列表的构造函数来实现,使代码结构更加清晰。

在调用时确定使用哪个构造函数: 当创建类的对象时,编译器会根据传递给构造函数的参数的数量和类型来确定使用哪个构造函数。例如:

int main() {
    MyClass obj1(5); // 调用带int参数的构造函数
    MyClass obj2(3.14); // 调用带double参数的构造函数
    return 0;
}

这里obj1的创建传递了一个int类型的参数5,因此编译器会调用MyClass(int num)这个构造函数;而obj2的创建传递了一个double类型的参数3.14,编译器就会调用MyClass(double num)这个构造函数。如果传递的参数与任何构造函数的参数列表都不匹配,编译器将报错。