Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Intermediate
Oct 29, 1998

User-Defined New and Delete Cannot be Declared in a Namespace

Operators new and delete can be declared in a class scope. However, the Standard prohibits declarations of these operators in a namespace. Why is this? Consider the following example:
 
char *pc; 
namespace A { 
void operator new ( size_t ); 
void operator delete ( void * );
void func () {
	  pc = new char ( 'a');
}
}

void f() { delete pc; } // which version of delete to call, A::delete or standard delete?
 
Some programmers would expect the operator A::delete to be selected since it matches the operator new that was used to allocate the storage. Others would expect the standard operator delete to be called since A::delete is not visible in function f. By prohibiting declarations of new and delete in a namespace, you can avoid this hassle.
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap