When it comes to making abstract classes your really just making a class to derive other classes from. But it that really more efficient?

I mean yesfor the programmer life becomes much easier when you can just derive classes from others, but honestly for the computer it is very inefficient. Take this example:

class Shape
{
Shape();

double Perimeter();
}


The class "Shape" has a constructor and a member function that will return the perimeter of a Shape object. Now to derive further along the heirarchy you get class "Circle":

class Circle: public Shape
{
Circle();

double Circumference();
}


By the standard paradigm the Circle class constructor class should call the constructor of the Shape base class. Now how is that efficient? The computer has to call the Circle constructor everytime a Circle object is created and then also has to call the Shape class constructor. The more functions that have to be called the slower the computer can run so if everything in a system is based upon the idea of deriving classes to make programming easier you have to spend more money on faster hardware.

If you just had the program have less function calls the program can run much much faster, but everyone says Object Oriented Programming is the best way to program. But that's only from a Programmer point of view not a computer's point of view.