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; };