当你使用 new[]
操作符来创建一个对象数组时,构造函数会被调用与数组大小相等的次数。每个数组元素都会通过构造函数进行初始化。
以下是一个例子:
#include <iostream>
class MyClass {
public:MyClass() {std::cout << "MyClass constructor called." << std::endl;}~MyClass() {std::cout << "MyClass destructor called." << std::endl;}
};
int main() {const int size = 5;MyClass* myArray = new MyClass[size]; // 构造函数被调用5次// ... 使用数组 ...delete[] myArray; // 析构函数被调用5次return 0;
}
在这个例子中,当我们执行 new MyClass[size];
时,MyClass
的构造函数会被调用 size
次(在这个例子中是5次),每次调用都会初始化数组中的一个元素。
当使用 delete[]
来释放这个数组时,每个数组元素的析构函数都会被调用一次,以便进行适当的清理工作。在这个例子中,析构函数也会被调用5次。
所以,使用 new[]
创建对象数组时,构造函数和析构函数的调用次数与数组的大小相同。这是C++管理动态分配内存对象生命周期的机制。