C# Tutorials and offshore development in India
    Tutorials   Resources   Forum   Reviews   Communities   Interview   Jobs   Projects   Training   Your Ad Here    
Silverlight Games | Mentor | Code Converter | Articles | Code Factory | Computer Jokes | Members | Peer Appraisal | IT Companies | Bookmarks | Polls | Revenue Sharing | Lobby | Gift Shop |


Prizes & Awards
My Profile



Active Members
TodayLast 7 Days more...






Resources » Code Snippets » General »

Overloadeing new operator for the Names class using c++


Posted Date: 24 Aug 2009    Resource Type: Code Snippets    Category: General
Author: Santosh Kumar SinghMember Level: Gold    
Rating: 1 out of 5Points: 4



////////////////////////////////////////
#include
#include
#include
#include

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;
}



Responses

Author: Miss Meetu Choudhary    27 Aug 2009Member Level: Diamond   Points : 2
Must add description to your code.


Feedbacks      
Popular Tags   What are tags ?   Search Tags  
Sign In to add tags.
Overloadeing new operator for the Names class using c++  .  

Post Feedback


This is a strictly moderated forum. Only approved messages will appear in the site. Please use 'Spell Check' in Google toolbar before you submit.
You must Sign In to post a response.
Next Resource: Deletes all array elements in c++
Previous Resource: Example of New operator overloading in c++
Return to Discussion Resource Index
Post New Resource
Category: General


Post resources and earn money!
 
More Resources



dotNet Slackers

About Us    Contact Us    Privacy Policy    Terms Of Use