c++无缺省构造函数动态对象数组
时间: 2023-10-18 14:15:50 浏览: 169
在 C++ 中,如果一个类没有显式定义构造函数,那么编译器会为这个类生成一个缺省构造函数。缺省构造函数没有参数,也没有函数体,它的作用是初始化对象的成员变量。如果一个类没有缺省构造函数,那么在创建对象时就必须显式地调用构造函数进行初始化。
当我们需要创建动态对象数组时,由于数组中的每个元素都需要调用构造函数进行初始化,因此我们需要手动定义构造函数。
下面是一个示例代码,演示如何在没有缺省构造函数的情况下创建动态对象数组:
```c++
#include <iostream>
using namespace std;
class Person {
public:
Person(int age) {
this->age = age;
cout << "Person " << age << " has been created." << endl;
}
~Person() {
cout << "Person " << age << " has been destroyed." << endl;
}
private:
int age;
};
int main() {
int n = 3;
Person* arr = new Person[n] {Person(20), Person(21), Person(22)};
delete[] arr;
return 0;
}
```
在上述代码中,我们定义了一个 Person 类,并在类中定义了一个带有参数的构造函数。在主函数中,我们首先定义了一个整数 n ,表示动态数组的长度。然后,我们使用 new 运算符创建了一个长度为 n 的 Person 类型的动态数组,并用花括号括起来的列表初始化数组中的每个元素。最后,我们使用 delete[] 运算符释放了动态数组所占用的内存。
需要注意的是,如果我们在创建动态数组时没有对每个元素进行初始化,那么这些元素的值将是未定义的,可能导致程序出现未知的错误。因此,在创建动态数组时最好总是进行初始化。
阅读全文