new[]创建对象数组会怎样?

当你使用 new[] 操作符来创建一个对象数组时,构造函数会被调用与数组大小相等的次数。每个数组元素都会通过构造函数进行初始化。
以下是一个例子:

#include 
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++管理动态分配内存对象生命周期的机制。

你可能感兴趣的:(C++学习记录,c++,构造函数)