Когда нам нужен конструктор по умолчанию?

Мой вопрос простой. Когда нам нужен конструктор по умолчанию? См. Приведенный ниже код:

class Shape
{
    int k;

public:
    Shape(int n) : k(n) {}
    ~Shape() {}
};

class Rect : public Shape
{
    int l;

public:
    Rect(int n): l(n)
    {}      //error C2512: 'Shape' : no appropriate default constructor available

    ~Rect() {}
};
  1. Почему компилятор не создает конструктор по умолчанию с нулевым аргументом неявно в классе Rect?

  2. Насколько мне известно, если класс (Rect) является производным от другого класса (Shape), который имеет конструктор по умолчанию (либо неявно сгенерированный, либо предоставленный явно), конструктор по умолчанию должен быть сгенерирован компилятором.

25
задан Jeffrey Bosboom 22 February 2015 в 15:02
поделиться