📄 pr11029.cpp
字号:
////////////////////////////////////////
// File Name: pr11029.cpp
////////////////////////////////////////
#include <iostream>
#include <cstring>
#include <cstddef>
#include <new>
const int maxnames = 5;
////////////////////////////////////////
// The Names class.
////////////////////////////////////////
class Names
{
char name[25];
static char Names::pool[];
static bool Names::inuse[maxnames];
public:
Names(char* s)
{ std::strncpy(name, s, sizeof(name)); }
void* operator new(size_t) throw(bad_alloc);
void operator delete(void*) throw();
void display() const
{ std::cout << name << std::endl; }
};
// Simple memory pool to handle fixed number of Names.
char Names::pool[maxnames * sizeof(Names)];
bool Names::inuse[maxnames];
// Overloaded new operator for the Names class.
void* Names::operator new(size_t) throw(bad_alloc)
{
for (int p = 0; p < maxnames; p++)
{
if (!inuse[p])
{
inuse[p] = true;
return pool+p*sizeof(Names);
}
}
throw bad_alloc();
}
// Overloaded delete operator for the Names class.
void Names::operator delete(void* p) throw()
{
if (p != 0)
inuse[((char*)p - pool) / sizeof(Names)] = false;
}
////////////////////////////////////////
// The main() function.
////////////////////////////////////////
int main()
{
Names* 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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -