Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C++ Moderated > Re: A proposal ...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 7 of 12 Topic 9563 of 9807
Post > Topic >>

Re: A proposal to cancel overriding the DEFAULT operator new/delete

by xushiwei <xushiweizh@[EMAIL PROTECTED] > May 2, 2008 at 01:02 PM

http://xu****wei.com/cancel-overriding-the-default-operator-new-delete

* Motivation

I don't think we need to override the DEFAULT operator new/delete.
This makes your code doesn't work well together 3rdparty code (if it
also overrides them).

Why overriding the DEFAULT operator new/delete is bad?

Allowing to override the DEFAULT operator new/delete means the DEFAULT
operator new/delete are special operators. When we have more than one
implementations of an operator, the compiler/linker will re****t a
redefining error. However, it allows there are two implementations of
the DEFAULT operator new/delete (one of them is implemented as
default). It sounds good. But, This gives a hint that there may have
many implementations of the DEFAULT operator new/delete. When this
happens, the compiler/linker doesn't know what should it do, and it
re****ts a redefining error. The C++ programmers have to solve such
accidents, especially when they use 3rdparty codes —— You know, there
are many libraries overriding the DEFAULT operator new/delete. But
unfortunately, they take a risk of conflict with each other.

* Impact on the Standard

Does my proposal break existing code? Yes, it does. But the compilers
of C++0x have a lot of ways to solve this. For example, the compilers
can skip overriding operator new/delete and use the default
implementation. And they can give a warning that reminds programmers
to eliminate outdated codes.

Why do I think to cancel overriding the DEFAULT operator new/delete is
possible? Because overriding the DEFAULT operator new/delete only
change the implementation, not the semantic (the concept). If
implementations changes the semantic of DEFAULT operator new/delete,
they are bad code indeed.

* Proposed Text

I suggest ISO C++ cancel this feature, just like we can't override
operator+ of all C types. That is:

1. You CAN NOT override these operators:

void* operator new(size_t size);
void operator delete(void* p);

2. You CAN override DEFAULT operator new in non global namespace:

namespace foo
{
     void* operator new(size_t size) { ... }
     void operator delete(void* p) { ... }
};

And then you can use new/delete objects as the following:

int* intObj = foo::new int;
foo::delete intObj;

3. You CAN override NON-DEFAULT operator new. Such as:

void* operator new(size_t size, my_allocator& alloc);

4. There is no need to override a NON-DEFAULT operator delete. If you
need to delete objects in special way, just use:

alloc.destroy(obj);


-- 
      [ See http://www.gotw.ca/resources/clcm.htm
for info about ]
      [ comp.lang.c++.moderated.    First time posters: Do this! ]
 




 12 Posts in Topic:
A proposal to cancel overriding the DEFAULT operator new/delete
xushiwei <xushiweizh@[  2008-04-30 04:13:22 
Re: A proposal to cancel overriding the DEFAULT operator new/del
Tony Delroy <tony_in_d  2008-04-30 10:27:26 
Re: A proposal to cancel overriding the DEFAULT operator new/del
Francis Glassborow <fr  2008-04-30 10:28:10 
Re: A proposal to cancel overriding the DEFAULT operator new/del
xushiwei <xushiweizh@[  2008-04-30 17:02:45 
Re: A proposal to cancel overriding the DEFAULT operator new/del
Tony Delroy <tony_in_d  2008-04-30 22:16:45 
Re: A proposal to cancel overriding the DEFAULT operator new/del
Francis Glassborow <fr  2008-04-30 22:16:29 
Re: A proposal to cancel overriding the DEFAULT operator new/del
xushiwei <xushiweizh@[  2008-05-02 13:02:22 
Re: A proposal to cancel overriding the DEFAULT operator new/del
xushiwei <xushiweizh@[  2008-05-02 13:01:37 
Re: A proposal to cancel overriding the DEFAULT operator new/del
"Stephen Howe"   2008-05-03 06:13:29 
Re: A proposal to cancel overriding the DEFAULT operator new/del
Francis Glassborow <fr  2008-05-03 16:09:49 
Re: A proposal to cancel overriding the DEFAULT operator new/del
Alberto Ganesh Barbati &l  2008-05-04 17:17:09 
Re: A proposal to cancel overriding the DEFAULT operator new/del
dizzy <dizzy@[EMAIL PR  2008-05-05 07:13:25 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Jul 19 19:54:19 CDT 2008.