c?C++
-
well, Vunic, If you don't worry about self assignment, you'll expose yourself to some very subtle bugs that have very subtle and often disastrous symptoms. :)
dubeypankaj wrote:
you'll expose yourself to some very subtle bugs that have very subtle and often disastrous symptoms
For example..
He never answers anyone who replies to him. I've taken to calling him a retard, which is not fair to retards everywhere.-Christian Graus
-
dubeypankaj wrote:
you'll expose yourself to some very subtle bugs that have very subtle and often disastrous symptoms
For example..
He never answers anyone who replies to him. I've taken to calling him a retard, which is not fair to retards everywhere.-Christian Graus
VuNic wrote:
For example..
If you do weird things in the
=
operator (re-)definition, for instance, i.e. if you write it (implicitely) assuming it will be never used to do self-assignment. Have a look at the following code (please note, it is silly, written just to spot the point; moreover no check is done on memory allocation, for brevity)class Foo
{
static const int N = 10;
char * _buf;
public:
Foo(char c){_buf = new char [N]; memset(_buf, c, N);}
Foo & operator=(const Foo & foo)
{
if ( _buf )
{
delete _buf;
_buf = new char[N];
}
memcpy(_buf, foo._buf, N);
return *this;
}
Foo(const Foo & foo){...}
};void main()
{
Foo f('A');
f = f;
}:)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
VuNic wrote:
For example..
If you do weird things in the
=
operator (re-)definition, for instance, i.e. if you write it (implicitely) assuming it will be never used to do self-assignment. Have a look at the following code (please note, it is silly, written just to spot the point; moreover no check is done on memory allocation, for brevity)class Foo
{
static const int N = 10;
char * _buf;
public:
Foo(char c){_buf = new char [N]; memset(_buf, c, N);}
Foo & operator=(const Foo & foo)
{
if ( _buf )
{
delete _buf;
_buf = new char[N];
}
memcpy(_buf, foo._buf, N);
return *this;
}
Foo(const Foo & foo){...}
};void main()
{
Foo f('A');
f = f;
}:)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]CPallini wrote:
i.e. if you write it (implicitely) assuming it will be never used to do self-assignment.
And why would someone do that? Isn't that considered Best Practice? Or is this question about something entirely different than what I have been able to interpret? It seems to me that it is about this subject[^]
-
What are the problems associated with self assignment(object = object; )?
-
CPallini wrote:
i.e. if you write it (implicitely) assuming it will be never used to do self-assignment.
And why would someone do that? Isn't that considered Best Practice? Or is this question about something entirely different than what I have been able to interpret? It seems to me that it is about this subject[^]
led mike wrote:
And why would someone do that?
Exactly that? Just CPallini... :rolleyes:
led mike wrote:
Isn't that considered Best Practice?
Nope, anyway it's a good candidate to be inserted into the WPF (Worst Practice Foundation). :-D
led mike wrote:
Or is this question about something entirely different than what I have been able to interpret?
led mike wrote:
And why would someone do that? Isn't that considered Best Practice? Or is this question about something entirely different than what I have been able to interpret? It seems to me that it is about this subject[^]
Nope, you understand it correctly and, damn... If you recalled that page before my post I hadn't to put the weird code therein. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
led mike wrote:
And why would someone do that?
Exactly that? Just CPallini... :rolleyes:
led mike wrote:
Isn't that considered Best Practice?
Nope, anyway it's a good candidate to be inserted into the WPF (Worst Practice Foundation). :-D
led mike wrote:
Or is this question about something entirely different than what I have been able to interpret?
led mike wrote:
And why would someone do that? Isn't that considered Best Practice? Or is this question about something entirely different than what I have been able to interpret? It seems to me that it is about this subject[^]
Nope, you understand it correctly and, damn... If you recalled that page before my post I hadn't to put the weird code therein. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]CPallini wrote:
Nope, anyway it's a good candidate to be inserted into the WPF (Worst Practice Foundation).
:confused: It's not considered best practice to implement an assignment operator the way it is shown in the parashift FAQ Lite to exclude self assignment?
-
CPallini wrote:
Nope, anyway it's a good candidate to be inserted into the WPF (Worst Practice Foundation).
:confused: It's not considered best practice to implement an assignment operator the way it is shown in the parashift FAQ Lite to exclude self assignment?
Nope. I was talking about my code sample (supposing your sentence ironical). Sorry for the misunderstanding. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Nope. I was talking about my code sample (supposing your sentence ironical). Sorry for the misunderstanding. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
led mike wrote:
And why would someone do that?
Exactly that? Just CPallini... :rolleyes:
led mike wrote:
Isn't that considered Best Practice?
Nope, anyway it's a good candidate to be inserted into the WPF (Worst Practice Foundation). :-D
led mike wrote:
Or is this question about something entirely different than what I have been able to interpret?
led mike wrote:
And why would someone do that? Isn't that considered Best Practice? Or is this question about something entirely different than what I have been able to interpret? It seems to me that it is about this subject[^]
Nope, you understand it correctly and, damn... If you recalled that page before my post I hadn't to put the weird code therein. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]Thanx for the adjective used for me(Worst Practice Foundation user). Any way, my question was what are the problems associated with self assignment of an object to itself? Ppl gave me all the comments and on my programming as well rather to answer my question, but yes, i got the answer, please refer the following link: http://faqs.cs.uu.nl/na-dir/C++-faq/part06.html Refer: SECTION [12]: Assignment operators(in the link above) Thanx & Regards
-
Thanx for the adjective used for me(Worst Practice Foundation user). Any way, my question was what are the problems associated with self assignment of an object to itself? Ppl gave me all the comments and on my programming as well rather to answer my question, but yes, i got the answer, please refer the following link: http://faqs.cs.uu.nl/na-dir/C++-faq/part06.html Refer: SECTION [12]: Assignment operators(in the link above) Thanx & Regards
dubeypankaj wrote:
Thanx for the adjective used for me(Worst Practice Foundation user).
It wasn't used for you, it was for my sample code (see [^])... In a bad mood today? :-D I just wanted to make Vunic aware that, yes, there might be problems with self-assignment. Of course the link provided by led mike spots the point far better than I did. :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]