
"Alberto Barbati" <abarbati@iaanus.com> wrote in message news:c2jldp$j19$1@sea.gmane.org...
Thorsten Ottosen wrote: [snip]
yeah, I could have said it better :-) What I meant was that copy-behavior is ususally incompatible with non-trivial destructors. What I mean by non-trivial destructors is that eg. a file is closed or a connection is closed. In those cases making temporaries and copies is not good: [snip] I learned that good programming practice is that if a class requires a non-trivial destructor it should either implement both the copy constructor and the assignment operator or declare them private and leave them unimplemented.
true. Don't be confusd by my slight misuse of "non-trivial destructor".
Moreover, if either the copy constructor or the assignment operator is defined, both of them should.
also true.
I never found a case where it was worth violating this practice, maybe you have such an example?
no.
Fact is that I still fail to understand why a class that has a meaningful copy constructor cannot implement a meaningful assignment operator with the same semantic as dtor+copy ctor, but more efficiently.
I can't either. [remark: we agree that circular_buffer should use assignment] [note:I was trying to mention a specific type of RAII objects which cannot be put in copying containers].Copy behavior is not always desireable. If assigment of a Socket class would require the connection to close(), then I don't want assigment. And I don't want temporary objects. Hence the object must be heap-allocated. br Thorsten