Browse DevX
Sign up for e-mail newsletters from DevX

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



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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.



Thanks for your registration, follow us on our social networks to keep up-to-date