2020年全国计算机二级C++复习知识点:重载new[]和delete[]

时间:2020-05-13 18:44:00 来源:

【摘要】 即将参加全国计算机等级考试的考生们,考试即将到来,大家的备考工作进行得如何了?考必过为大家精心整理了2020年全国计算机二级C++复习知识点:重载new[]和delete[],希望能够助力全国计算机等级考试,相信坚持一定会有成果。那么,同学们一起快来做题吧!关于2020年全国计算机二级C++复习知识点:重载new[]和delete[]的具体内容如下:

2020年全国计算机二级C++复习知识点:重载new[]和delete[]

对于上面的程序,假如有下面的语句:

Names *nms=new Names[10]

...

delete [] nms;

那么,这些语句会调用全局new和delete运算符,而不是重载过的new和delete。为了重载能为对象数组分配内存的new和delete运算符,必须像下面的程序一样,对new[]和delete[]也进行重载。

#include iostream.h

#include string.h

#include stddef.h

#include new.h

const int maxnames = 5;

class Names

{

char name[25];

static char Names::pool[];

static bool Names::inuse[maxnames];

public:

Names(char* s) { strncpy(name,s,sizeof(name)); }

void* operator new(size_t) throw(bad_alloc);

void operator delete(void*) throw();

void display() const { cout < };

char Names::pool[maxnames * sizeof(Names)];

bool Names::inuse[maxnames];

void* Names::operator new[](size_t size) throw(bad_alloc)

{

int elements=size/sizeof(Names);

int p=-1;

int i=0;

while((i {

if(!inuse[i]) p=i;

++i;

}

// Not enough room.

if ((p==-1) || ((maxnames-p) for(int x=0; x return pool+p*sizeof(Names);

}

void Names::operator delete[](void* b) throw()

{

if(b!=0)

{

int p=((char*)b- pool)/sizeof(Names);

int elements=inuse[p];

for (int i=0; i }

}

int main()

{

Names* np = new Names[maxnames];

int i;

for(i=0; i {

cout < char name[25];

cin >> name;

*(np + i) = name;

}

for(i=0; idisplay();

delete [] np;

return 0;

}

重载new[]和delete[]要比重载new和delete考虑

以上就是考必过为大家整理的2020年全国计算机二级C++复习知识点:重载new[]和delete[]的具体内容。没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。你必须特别努力,才能显得毫不费力。最后,考必过预祝大家在未来的全国计算机等级考试中能够取得优异的成绩!

上一篇      下一篇
计算机等级相关推荐 更多>>
计算机等级热点专题 更多>>
热点问答
国家公务员考试年龄限制是多少 公务员国考和省考考试内容有什么区别 函授大专学历能不能考公务员 国家公务员考试考点能自己选择吗 新闻学专业能报考2022年公务员考试吗 什么是联合培养研究生 什么是破格录取研究生 什么人不适合读研 研究生报名户口所在地填什么 研究生结业和毕业有什么区别
网站首页 网站地图 返回顶部
考必过移动版 https://m.kaobiguo.net