面试题答案
一键面试- 构造函数重载限制:
- 构造函数可以重载,只要参数列表不同(参数个数、参数类型或参数顺序不同)即可。这使得可以根据不同的初始化需求,提供多种构造对象的方式。
- 析构函数重载限制:
- 析构函数不能重载。每个类只能有一个析构函数,其名称与类名相同,前面加波浪号
~
,且无参数和返回值。这是因为析构函数的主要作用是在对象销毁时进行清理工作,对于一个类的对象,其清理逻辑通常是一致的,不需要多种不同参数形式的析构函数。
- 析构函数不能重载。每个类只能有一个析构函数,其名称与类名相同,前面加波浪号
- 代码示例:
#include <iostream>
class MyClass {
public:
// 构造函数重载
MyClass() {
std::cout << "Default constructor called." << std::endl;
}
MyClass(int value) {
std::cout << "Constructor with int parameter called, value: " << value << std::endl;
}
// 析构函数,不能重载
~MyClass() {
std::cout << "Destructor called." << std::endl;
}
};
int main() {
MyClass obj1;
MyClass obj2(10);
return 0;
}
在上述代码中,MyClass
类有两个构造函数,分别是无参构造函数和带一个int
参数的构造函数,体现了构造函数的重载。而析构函数只有一个,不能进行重载。