C ++ wywoływanie konstruktorów klasy bazowej

#include <iostream>
#include <stdio.h> 
using namespace std;

// Base class
class Shape 
{
   public:
      void setWidth(int w)
      {
         width = w;
      }
      void setHeight(int h)
      {
         height = h;
      }
      Shape()
      {
    printf("creating shape \n");
      }
      Shape(int h,int w)
      {
     height = h;
         width = w;
         printf("creatig shape with attributes\n");
      } 
   protected:
      int width;
      int height;
};

// Derived class
class Rectangle: public Shape
{
   public:
      int getArea()
      { 
         return (width * height); 
      }
      Rectangle()
      {
     printf("creating rectangle \n");
      }
      Rectangle(int h,int w)
      {
     printf("creating rectangle with attributes \n");
     height = h;
         width = w;
      }
};

int main(void)
{
   Rectangle Rect;

   Rect.setWidth(5);
   Rect.setHeight(7);

   Rectangle *square = new Rectangle(5,5);
   // Print the area of the object.
   cout << "Total area: " << Rect.getArea() << endl;

   return 0;
}

Dane wyjściowe programu podano poniżej

creating shape 
creating rectangle 
creating shape 
creating rectangle with attributes 
Total area: 35

Podczas konstruowania obu pochodnych obiektów klasowych widzę, że zawsze jest to domyślnie wywoływany konstruktor klasy bazowej. Czy jest ku temu powód? Czy to jest powód, dla którego języki takie jak python domagają się jawnych wywołań konstruktorów klas bazowych, a nie niejawnych wywołań takich jak C ++?

questionAnswers(6)

yourAnswerToTheQuestion