@above..

This is what i assume is happening ( apart from inherent compiler
optimization is any)...Let me know if i m wrong..

when s2=name; is done it should call the overloaded equal to
operator..

But, 'name' is not a string object, its basically a char pointer to a
const string "test"..
Now, for simplicity lets assume that name is char array..

Now, given a binary operator, for the operation to take place both the
operands ideally should be of the same type...

For ex:
int a;
a = 10.0;
Here, 10.0 is double and a is int, for the assignment to work first
10.0 will be converted to int data type and then assigned to a..

In case, the right hand side of a = operator cannot be converted to
the left hand side type, then ideally an incompatible assignment shall
be thrown..

Going back to the above example... conversion of 10.0 to 10 is
basically performed as part of implicit conversion or type propagation
as part of basic data types (supported by the compiler)...

Now class is a custom data type and hence, we don't expect the
compiler to randomly convert from any data type to the class type for
the '=' operator to work..
Then how is it done..
Basically constructors of a class act as implicit type converters as
well...
Hence, for statement similar to s2 = name;
If 'name' is not of the type of s2 i.e.'string' type then it will try
to look for implicit conversions..
Now, a constructor of a class acts as an implicit converter as well..
and a 'string' class has a constructor 'string(char *)', it will use
'string(char*)' constructor to construct a temporary intermediate
string object which will hold the value 'test' and then assign to
s2...
Once, assignment operation is over, the temporary string object
containing the value 'test' will be destroyed..

On Jan 3, 12:05 pm, Arun Vishwanathan <[email protected]> wrote:
> I just have a basic doubt..does the string s1,s2 statement call any default
> constructor?or is it that it is not performed since parameterised
> constructor is present?
>
> On Wed, Sep 21, 2011 at 1:31 AM, vijay singh <[email protected]>wrote:
>
>
>
>
>
>
>
>
>
> > It is because of the presence of the single parameterised constructor in
> > the class definition.
> > So, if we are writing the following statement...
> > string s1;
> > s1="test";
>
> > It'll call the single parameterised constructor.
>
> > But this only true in the case of single value assignment as in the above
> > statement..
>
> >  --
> > You received this message because you are subscribed to the Google Groups
> > "Algorithm Geeks" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group at
> >http://groups.google.com/group/algogeeks?hl=en.
>
> --
>  "People often say that motivation doesn't last. Well, neither does bathing
> - that's why we recommend it daily."

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to