throw 的用法 helpme

exching 2004-03-16 11:20:09
#include <iostream>
#include <cstring>
#include <cstddef>
#include <new>

const int maxname = 5;

class Names
{
char name[25];
static char Names::pool[];
static bool Names::inuse[maxname];

public:
Names(char* s)
{
strcpy(name, s);
};

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

void display() const
{
std::cout<<name<<std::endl;
}
};

char Names::pool[maxname * sizeof(Names)];
bool Names::inuse[maxname];

void* Names::operator new(size_t size) throw(bad_alloc)
{
for (int p=0; p<maxname; p++)
{
if ( !inuse[p] )
{
inuse[p] = true;
return pool + p*sizeof(Names);
}
}
throw bad_alloc();
}

void Names::operator delete(void* p) throw()
{
if ( p != 0 )
inuse[((char*)p - pool)/sizeof(Names)] = false;
}

int main()
{
Name* nm[maxnames];

int i;

for( i=0; i<maxnames; i++ )
{
std::cout<<std::endl<<"Enter name #"<<i+1<<" :";
char name[25];
std::cin>>name;
nm[i] = new Names(name);
}

for ( i=0; i<maxnames; i++ )
{
nm[i]->display();
delete nm[i];
}

return 0;
}

各位大虾,帮我调试下程序。
...全文
106 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluejugar 2004-09-06
  • 打赏
  • 举报
回复
已经调试过了.
bluejugar 2004-09-06
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstring>
#include <cstddef>
#include <new>
using namespace std;
const int MAX_NAME = 5;//常量定义建议用大写.

class Names
{
char name[25];
static char Names::pool[];
static bool Names::inuse[MAX_NAME];

public:
Names(char* s)
{
strcpy(name, s);
};

void* operator new(size_t) throw(bad_alloc);//在std名字空间中.
void operator delete(void*) throw();

void display() const
{
std::cout<<name<<std::endl;
}
};

char Names::pool[MAX_NAME * sizeof(Names)];
bool Names::inuse[MAX_NAME];

void* Names::operator new(size_t size) throw(bad_alloc)
{
for (int p=0; p<MAX_NAME; p++)
{
if ( !inuse[p] )
{
inuse[p] = true;
return pool + p*sizeof(Names);
}
}
throw bad_alloc();
}

void Names::operator delete(void* p) throw()
{
if ( p != 0 )
inuse[((char*)p - pool)/sizeof(Names)] = false;
}

int main()
{
Names* nm[MAX_NAME];

int i;

for( i=0; i<MAX_NAME; i++ )
{
std::cout<<std::endl<<"Enter name #"<<i+1<<" :";
char name[25];
std::cin>>name;
nm[i] = new Names(name);
}

for ( i=0; i<MAX_NAME; i++ )
{
nm[i]->display();
delete nm[i];
}

return 0;
}
hcj2002 2004-03-16
  • 打赏
  • 举报
回复
文不对题呀?
defstu 2004-03-16
  • 打赏
  • 举报
回复
同意楼上的
fierygnu 2004-03-16
  • 打赏
  • 举报
回复
直接雇个枪手帮你上班或考试吧。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧