Polymorphic Copy Construction
When using polymorphism, one quite often needs to create copies of objects by the base class pointer. A commonly used idiom for this is adding a virtual clone function that is defined in every derived class. The CRTP pattern can be used to avoid having to duplicate that function or other similar functions in every derived class.
// Base class has a pure virtual function for cloning class Shape { public: virtual ~Shape {} virtual Shape *clone const = 0; }; // This CRTP class implements clone for Derived templateThis allows obtaining copies of squares, circles or any other shapes by shapePtr->clone.
Read more about this topic: Curiously Recurring Template Pattern
Famous quotes containing the words copy and/or construction:
“I believe it has been said that one copy of The Times contains more useful information than the whole of the historical works of Thucydides.”
—Richard Cobden (18041865)
“Theres no art
To find the minds construction in the face:
He was a gentleman on whom I built
An absolute trust.”
—William Shakespeare (15641616)