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: copy constr...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 4 of 10 Topic 9503 of 9807
Post > Topic >>

Re: copy constructor not being called

by David Pol <david@[EMAIL PROTECTED] > Apr 15, 2008 at 11:22 PM

On 15 abr, 20:33, suresh <suresh.amritap...@[EMAIL PROTECTED]
> wrote:
> Hi
>
> In the following code, I expect the copy constructor to be called as
> per the textbooks but it is not being called. Could you please tell me
> why? g++ version 4.1.2
>
> # include <iostream>
> using namespace std;
> class base
> {
>    char s;
> public:
>    base( ){cout<< "construction" << endl;}
>    base(const char a ) {cout << "construction with arg" << endl;}
>    base(const base & a){cout <<"copy constructor" << endl;}
>    base & operator=(const base & a){cout << "assignment operator" <<
> endl;}
>    ~base( ) {cout << "destruction" << endl;}
>
> };
>
> main ( )
> {
>    base b1 = 'x'; //why copy constructor not called here?
>    base b2 = b1; //copy constructor is called
>
> }
>
> the line base b1 = 'x', as per my understanding must create a
> tem****ary object and then it should be copied to b1. But only the
> constructor with argument is called in this example when executed.
>
> Could you please explain why?

Hello,

Indeed,

base b1 = 'x';

should construct a tem****ary object of type base using the constructor
of base that takes a const char argument, and then copy it into b1.
But the compiler is allowed to elide the call to the copy constructor
of base in order to generate more optimal code:

base b1('x');

Note that the compiler is still required to check whether the elided
copy constructor is accessible or not.

Regards,
David

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




 10 Posts in Topic:
copy constructor not being called
suresh <suresh.amritap  2008-04-15 12:33:42 
Re: copy constructor not being called
dimitry.ivanov@[EMAIL PRO  2008-04-15 23:19:01 
Re: copy constructor not being called
d04rp@[EMAIL PROTECTED]   2008-04-15 23:20:45 
Re: copy constructor not being called
David Pol <david@[EMAI  2008-04-15 23:22:50 
Re: copy constructor not being called
Chris Uzdavinis <cuzda  2008-04-15 23:21:49 
Re: copy constructor not being called
Marcin Swiderski <sfid  2008-04-15 23:22:43 
Re: copy constructor not being called
Francis Glassborow <fr  2008-04-16 11:33:30 
Re: copy constructor not being called
Chris Uzdavinis <cuzda  2008-04-16 11:34:41 
Re: copy constructor not being called
Ron Natalie <ron@[EMAI  2008-04-16 15:44:47 
Re: copy constructor not being called
Marcin Swiderski <sfid  2008-04-17 03:47:55 

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:55:10 CDT 2008.