MST

星途 面试题库

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

请阐述在C++中实现构造函数重载的必要条件,并且编写一段代码示例,至少包含两个重载的构造函数,同时说明如何根据不同的参数调用合适的构造函数。
31.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

构造函数重载的必要条件

  1. 函数名相同:所有重载的构造函数都必须与类名相同,这是构造函数的基本特性。
  2. 参数列表不同:参数的个数、类型或顺序至少有一项不同。返回类型(构造函数无返回类型)和函数修饰符(如const等)不能作为区分重载构造函数的依据。

代码示例

#include <iostream>

class MyClass {
public:
    // 第一个重载的构造函数,无参数
    MyClass() {
        std::cout << "无参数构造函数被调用" << std::endl;
    }

    // 第二个重载的构造函数,有一个int类型参数
    MyClass(int num) {
        std::cout << "带一个int参数的构造函数被调用,参数值为:" << num << std::endl;
    }

    // 第三个重载的构造函数,有一个double类型参数
    MyClass(double num) {
        std::cout << "带一个double参数的构造函数被调用,参数值为:" << num << std::endl;
    }

    // 第四个重载的构造函数,有一个int和一个double类型参数
    MyClass(int num1, double num2) {
        std::cout << "带一个int和一个double参数的构造函数被调用,int参数值为:" << num1 << ",double参数值为:" << num2 << std::endl;
    }
};

int main() {
    MyClass obj1; // 调用无参数构造函数
    MyClass obj2(10); // 调用带一个int参数的构造函数
    MyClass obj3(3.14); // 调用带一个double参数的构造函数
    MyClass obj4(5, 2.5); // 调用带一个int和一个double参数的构造函数

    return 0;
}

调用合适构造函数的方式

在创建对象时,编译器会根据提供的参数列表来选择合适的构造函数。如果提供的参数数量、类型和顺序与某个构造函数的参数列表完全匹配,就会调用该构造函数。例如:

  • MyClass obj1;,没有提供参数,因此调用无参数的构造函数MyClass()
  • MyClass obj2(10);,提供了一个int类型参数,所以调用MyClass(int num)构造函数。
  • MyClass obj3(3.14);,提供了一个double类型参数,调用MyClass(double num)构造函数。
  • MyClass obj4(5, 2.5);,提供了一个int和一个double类型参数,调用MyClass(int num1, double num2)构造函数。