在类中,怎么实现多个构造函数(形参相同)
时间: 2024-09-22 09:05:02 浏览: 56
在C++中,为了实现多个构造函数共享相同的形参列表,但有不同的初始化行为,你可以使用“析构式构造”(Destructor Initialization)。这是通过在一个构造函数内调用另一个构造函数来完成的。这种方式允许你在一个构造函数中提供默认参数或者执行其他特殊初始化步骤。
举个例子,假设你有一个`Person`类,有两个构造函数,它们共享基本信息但有年龄的不同处理方式:
```cpp
class Person {
public:
// 析构式构造
explicit Person(int age = 0, const std::string& name = "") : age(age), name(name) {}
// 具体的构造函数,用于接受特定年龄
Person(int special_age, const std::string& name)
: Person(special_age, name) {} // 调用了默认参数的构造函数
private:
int age;
std::string name;
};
```
在这个例子中,当你直接创建一个`Person`对象时(`Person person;`),默认构造函数会被调用,如果没有指定`name`,`age`将被初始化为0。而当你传递特定年龄时(`Person person(30, "Alice");`),第二个构造函数会被调用,传入的`special_age`会被用于设置`age`,`name`则保持默认值。
阅读全文