Connecting Tech Pros Worldwide Help | Site Map

copy ctor

 
LinkBack Thread Tools Search this Thread
  #1  
Old September 25th, 2007, 02:45 PM
subramanian100in@yahoo.com, India
Guest
 
Posts: n/a
Default copy ctor

I thought the copy ctor always takes the form
Test::Test(const Test & arg);
for a class Test.

But I read the following sentence in Stanley Lippman's C++ Primer 4th
Edition(Page 476):

The copy constructor is a special constructor that has a single
parameter that is a (usually const) reference to the class type.

My doubt
--------------
Since the above sentence contains "(usually const)" in parantheses,
does it mean that we may need a copy ctor that takes the form
Test::Test(Test & arg) ?
(that is, reference to plain type) ?

Kindly let me know when we will need this second form.

Thanks
V.Subramanian


  #2  
Old September 25th, 2007, 04:35 PM
=?UTF-8?B?RXJpayBXaWtzdHLDtm0=?=
Guest
 
Posts: n/a
Default Re: copy ctor

On 2007-09-25 16:44, subramanian100in@yahoo.com, India wrote:
Quote:
I thought the copy ctor always takes the form
Test::Test(const Test & arg);
for a class Test.
>
But I read the following sentence in Stanley Lippman's C++ Primer 4th
Edition(Page 476):
>
The copy constructor is a special constructor that has a single
parameter that is a (usually const) reference to the class type.
>
My doubt
--------------
Since the above sentence contains "(usually const)" in parantheses,
does it mean that we may need a copy ctor that takes the form
Test::Test(Test & arg) ?
(that is, reference to plain type) ?
>
Kindly let me know when we will need this second form.
Yes, you might have a need for a non-const copy constructor, but I can
frankly not come up with a situation where you would. Perhaps if you
want to have special copy construction for some argument types (const
and temporaries), then you could declare both a const and a non-const
copy constructor.

Please also not that the copy constructor does not have to take only one
argument, as long as there are default values for the other arguments.

--
Erik Wikström
  #3  
Old September 25th, 2007, 07:35 PM
Kai-Uwe Bux
Guest
 
Posts: n/a
Default Re: copy ctor

Erik Wikström wrote:
Quote:
On 2007-09-25 16:44, subramanian100in@yahoo.com, India wrote:
Quote:
>I thought the copy ctor always takes the form
>Test::Test(const Test & arg);
>for a class Test.
>>
>But I read the following sentence in Stanley Lippman's C++ Primer 4th
>Edition(Page 476):
>>
>The copy constructor is a special constructor that has a single
>parameter that is a (usually const) reference to the class type.
>>
>My doubt
>--------------
>Since the above sentence contains "(usually const)" in parantheses,
>does it mean that we may need a copy ctor that takes the form
>Test::Test(Test & arg) ?
>(that is, reference to plain type) ?
>>
>Kindly let me know when we will need this second form.
>
Yes, you might have a need for a non-const copy constructor, but I can
frankly not come up with a situation where you would. Perhaps if you
want to have special copy construction for some argument types (const
and temporaries), then you could declare both a const and a non-const
copy constructor.
std::auto_ptr<is an example. It has a non-const copy constructure since
copying involves transfer of ownership and changes the source object.

[snip]


Best

Kai-Uwe Bux

  #4  
Old September 26th, 2007, 08:55 AM
James Kanze
Guest
 
Posts: n/a
Default Re: copy ctor

On Sep 25, 9:15 pm, Kai-Uwe Bux <jkherci...@gmx.netwrote:

[...]
Quote:
std::auto_ptr<is an example. It has a non-const copy
constructure since copying involves transfer of ownership and
changes the source object.
And look at all the hoops std::auto_ptr has to jump through so
you can e.g. return it from a function.

--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,840 network members.