class shape
{
public:
virtual shape *clone() const = 0;
...
};
class circle : public shape
{
public:
shape *clone() const;
...
};
shape *circle::clone() const
{
return new circle(*this);
}
class rectangle : public shape
{
public:
shape *clone() const;
...
};
shape *rectangle::clone() const
{
return new rectangle(*this);
}