Конструктор копирования в наследуемом классе

Запутался с наследованием и конструкторами. Как я понимаю, что наследование конструкторов в с++ не происходит, кроме базового.Но вот попался пример ,где чтобы запретить копирование предлагают наследоваться от такого класса:

class NonCopyable
{
  public: 
    NonCopyable (const NonCopyable &) = delete;
    NonCopyable & operator = (const NonCopyable &) = delete;

  protected:
    NonCopyable () = default;
    ~NonCopyable () = default; /// Protected non-virtual destructor
};
class CantCopy : private NonCopyable
{};

И тогда копирование будет запрещено, но разве у нас должно происходить наследование этого конструктора, если он с параметром?

NonCopyable (const NonCopyable &) = delete;

Ответы (1 шт):

Автор решения: user7860670

Наследование конструкторов в С++ может быть только явным. И конструктор по-умолчанию не исключение. В приведенном примере никакого наследования конструкторов не происходит. В данном случае компилятор создает для класса CantCopy конструктор по-умолчанию, в котором вызывается конструктор по-умолчанию базовых подъобъектов и полей. Такой конструктор без проблем корректно создается. А вот при попытке аналогичным образом сгенерировать конструктор копирования компилятор постигнет фиаско, так как конструктор копирования базового класса отмечен как запрещенный.

→ Ссылка