Если Ваш компилятор поддерживает C++ 11 стандартов, существует наследование конструктора с помощью using
(предназначенная игра слов). Поскольку больше видит C++ Википедии 11 статей . Вы пишете:
class A
{
public:
explicit A(int x) {}
};
class B: public A
{
using A::A;
};
Это все или ничего - Вы не можете наследовать только некоторых конструкторов, если Вы пишете это, Вы наследовали всех их. Для наследования только выбранных, необходимо записать отдельным конструкторам вручную и вызвать основного конструктора по мере необходимости от них.
Исторически конструкторы не могли быть наследованы в C++ 03 стандарта. Необходимо было наследовать их вручную один за другим путем вызова базового внедрения самостоятельно.
Конструкторы не наследованы. Их называет неявно или явно дочерний конструктор.
компилятор создает конструктора по умолчанию (один без аргументов) и конструктор копии по умолчанию (один с аргументом, который является ссылкой на тот же тип). Но если Вы хотите конструктора, который примет интервал, необходимо определить его явно.
class A
{
public:
explicit A(int x) {}
};
class B: public A
{
public:
explicit B(int x) : A(x) { }
};
ОБНОВЛЕНИЕ : В C++ 11, могут быть наследованы конструкторы. См. ответ Suma для деталей.
Необходимо явно определить конструктора в B и явно вызвать конструктора для родителя.
B(int x) : A(x) { }
или
B() : A(5) { }