C++中,声明对象数组时,能否自定义构造函数仅初始化对象的一个参数然后让系统默认构造函数来初始化其他参数
时间: 2024-09-06 20:03:38 浏览: 50
如果定义对象数组的语句为-C++程序设计
在C++中,声明对象数组时,可以自定义构造函数仅初始化对象的一个参数,而让系统默认构造函数来初始化其他参数。这通常通过构造函数的重载来实现。你可以定义多个构造函数,每个构造函数可以接受不同数量或类型的参数。如果构造函数定义了部分参数,剩余的参数可以使用默认值或者在类的定义中提供默认成员初始化器。
例如,假设有一个类`Person`,它有三个成员变量`name`、`age`和`gender`。你可以定义一个带有一个参数的构造函数来初始化`name`,然后让编译器调用默认构造函数来初始化`age`和`gender`(前提是它们有默认值)。
```cpp
class Person {
public:
std::string name;
int age;
char gender;
// 默认构造函数
Person() : age(0), gender('U') {} // 'U' 表示未知
// 带有一个参数的构造函数,初始化 name
Person(std::string n) : name(n) {} // age 和 gender 使用默认值
};
int main() {
// 创建 Person 对象数组,使用带有一个参数的构造函数初始化 name
Person people[2] = {"Alice", "Bob"};
// 此时 people[0].name = "Alice", people[0].age = 0, people[0].gender = 'U'
// people[1].name = "Bob", people[1].age = 0, people[1].gender = 'U'
return 0;
}
```
在这个例子中,我们创建了一个`Person`数组,通过传递一个字符串参数来初始化每个`Person`对象的`name`成员变量,而`age`和`gender`成员变量则通过默认构造函数中的默认成员初始化器被初始化为默认值。
阅读全文