You have to declare the over-ridden functions as part of your class definition
class Circle : public Shape
{
public:
Circle(int);
virtual void area(); // overrides Shape::area
void perimeter(); // overrides Shape::perimeter
virtual void volume();
private:
int r;
};
Note that the use of virtual
here is optional.
As n.m. noted, you should also include a virtual destructor in Shape
. You may also want to make its virtual functions pure virtual (based on your comment about Shape
being abstract)
class Shape
{
public:
virtual ~Shape() {}
virtual void area() = 0;
virtual void perimeter() = 0;
virtual void volume() = 0;
};