当我尝试通过getData()函数输入元素时,我得到错误分段错误(核心转储)。 我无法将元素输入数组。我无法理解为什么我无法访问void *返回到Class类型的内存位置。 * parr的大小是4个字节,我仍然无法将数据存入该内存位置???
#include<iostream>
#include<cstdlib>
using namespace std;
class Array
{
int *arr;
public:
void* operator new(size_t size)
{
void *parr=::new int[size];
//cout<<sizeof(parr);
return parr;
}
void operator delete(void *parr)
{
::delete (int*)parr;
}
void getData()
{
cout<<"Enter the elements";
for(int i=0;i<5;i++)
cin>>arr[i];
}
void showData()
{
cout<<"Array is:\n";
for(int i=0;i<5;i++)
cout<<arr[i];
}
};
int main()
{
Array *A=new Array;
A->getData();
//A->showData();
(*A).showData();
delete A;
return 0;
}
答案 0 :(得分:0)
您可能要做的不是为类new
重载delete
和Array
运算符,而是编写适当的构造函数和析构函数:
class Array {
int *arr;
public:
Array(size_t size) : arr(new int[size]) {
}
~Array() {
delete arr;
}
// ...
};