Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Advanced
Jun 21, 2005

Always Declare a Polymorphic Class' Copy Constructor as Private

Always declare a polymorphic class' copy constructor as private—this becomes important when you want to use a class in a container class for cloning.

The container class CHolder is a templatized class that holds generic objects. You also have a polymorphic class named CBase and its subclasses CDerived1 and CDerived2.

Suppose the client is storing objects of type CBase:

 
CHolder<CBase *> holder;
holder.add(new CDerived1);
holder.add(new CDerived2);
Consider another container instance:

CHolder<CBase*> holder1 = holder;
You need to copy the contained objects in CHolder's copy constructor. However, this results in slicing if the default copy of the contained object's ctor is involved—because the copy in C++ is always static. Thus, you should declare the virtual clone method in CBase and override in derived.

Furqan Shaikh
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap