Why doesn't C++ allow this
===

Consider this simple program


    class Shape
    {
    public:
    	virtual double getArea() = 0;
    	
    };
    
    class Rectangle : public Shape
    {
    	int width;
    	int height;
    
    public:
    	Rectangle( int w , int h ) :width(w) , height(h) {}
    
    	double getArea() const
    	{
    		return width * height;
    	}
    };
    
    
    int main() {
       
    	Rectangle* r = new Rectangle(4,2);
    }


Trying to compile this problem gives me 


     'Rectangle' : cannot instantiate abstract class

Why is this not allowed in C++ when covariant return types are ? **Of course I can fix the program by making `Rectangle::getArea` to be a non-const function** but I am curious as to why the language designers decided otherwise.

	

