当我尝试通过getData()函数输入元素时,我得到错误分段错误(核心转储)。我无法在数组中输入元素。我不能理解为什么我不能访问void* into 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;
}发布于 2017-01-29 20:18:20
您可能想要做的是编写适当的构造函数和析构函数,而不是重载类Array的new和delete运算符:
class Array {
int *arr;
public:
Array(size_t size) : arr(new int[size]) {
}
~Array() {
delete arr;
}
// ...
};https://stackoverflow.com/questions/41920681
复制相似问题