Kai-Uwe Bux
10/12/2008 7:27:00 AM
sam.barker0@gmail.com wrote:
> Hi,
>
> I have designed a class with an overloaded = operator.
>
> The problem is that
>
> whenever I invoke the method
> like
>
> const myclass<char> astring=another_object;
>
> my overloaded gets invoked and everything is fine.
That should not invoke the assignment operator but a constructor. What you
do is copy-initialization and unrelated to assignment.
> but if I write
>
> const myclass<char>& astring=another_object;
That initializes a reference. The rules are in [8.5.3]. What matters here is
that there is no requirement that a copy of the object is created.
> I guess the synthesised overload function takes place instead of my
> overloaded function.
No, that does not happen.
> astring is a shallow copy of another_object.
No, but it might look that way. Very likely, it _is_ your object.
[snip]
BTW: is there any reason not to use std::string as your string class (just
guessing from the names)?
Best
Kai-Uwe Bux