面试题答案
一键面试#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)
这个构造函数。如果传递的参数与任何构造函数的参数列表都不匹配,编译器将报错。