在对象数组中,构造函数被调用多次,而操作符new []仅被调用一次,为什么?
|
在堆中创建对象时,它(新)执行两项操作。
1:向接线员打电话
2:调用构造函数初始化对象。
我正在尝试创建对象数组,例如4个对象,因此它会合理地调用构造函数和析构函数4次,但只调用一次操作符new []。为什么?以下是我尝试运行的代码。
#include <iostream>
using namespace std;
class test
{
public:
static void *operator new[] (size_t size)
{
cout<<\"operaotor new called\"<<endl;
return ::operator new[](size);
}
test()
{
cout<<\"constructor called\"<<endl;
}
~test()
{
cout<<\"destructor called\"<<endl;
}
};
int main()
{
test *k = new test[4];
delete []k;
}
没有找到相关结果
已邀请:
2 个回复
舞备联
仅在此处分配必要的空间,仅此而已。当然,它只会这样做一次,因为其他任何事情都是无意义的,并且不会获得连续的缓冲区。对于
,您获得的you2ѭ参数应为
。
苛肠倒俱