Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1

Конструктор по умолчанию для производных классов

16.06.2014, 16:54. Показов 2460. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим, имеется код:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class abstr_emp
{
private:
    string fname;    // abstr_emp's first name
    string lname;    // abstr_emp's last name
    string job;
public:
    abstr_emp() : fname(""), lname(""), job("") {}
    abstr_emp(const string & fn, const string &  ln, const string &  j) 
        : fname(fn), lname(ln), job(j) {}
    virtual void ShowAll() const;    
    virtual void SetAll();
    friend ostream & operator<<(ostream & os, const abstr_emp & e);
    virtual ~abstr_emp() = 0;
};
 
class manager : virtual public abstr_emp
{
private:
    int inchargeof;        // number of abstr_emps managed
protected:
    int InChargeOf() const { return inchargeof; } // output
    int & InChargeOf(){ return inchargeof; }      // input
public:
    manager()
    : abstr_emp(), inchargeof(0) {}
    manager(const string & fn, const string & ln, const string & j, int ico = 0)
    : abstr_emp(fn,ln,j), inchargeof(ico) {}
    manager(const abstr_emp & e, int ico)
    : abstr_emp(e), inchargeof(ico) {}
    manager(const manager & m);
    virtual void ShowAll() const;
    virtual void SetAll();
};


Как реализовать конструктор по умолчанию в классе manager? Как заменить закрытую часть abstr_emp в классе manager? Помогите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2014, 16:54
Ответы с готовыми решениями:

Конструктор копирования производных классов: для чего это нужно?
Доброго времени суток! #ifndef EMP_H #define EMP_H #include &lt;iostream&gt; #include &lt;string&gt; class abstr_emp {

Общая переменная для всех производных классов
В основном абстрактном классе Class0, я создаю переменную: protected int variable = 0; В классе Сlass1, производным от Class0,...

Возможно ли некоторые публичные члены базового класса закрыть для производных классов?
Т.е. чтобы некоторые члены были доступны из экземпляра базового класса, но чтобы их невозможно было вызвать из экземпляров производных?

9
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
16.06.2014, 16:58
Так а тут по-твоему нет конструктора по-умолчанию для менеджер? Это не ты писал что ли?
0
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.06.2014, 17:00  [ТС]
Мне нужно определение конструктора, я не знаю, как реализацию составить.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.06.2014, 17:00
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Как реализовать конструктор по умолчанию в классе manager?
А в 26 строке что по-вашему?
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Как заменить закрытую часть abstr_emp в классе manager?
Закрытая (private) часть базового класса не видна в производном классе.
P.S. еще и виртуальное наследование зачем-то.
0
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.06.2014, 17:02  [ТС]
Цитата Сообщение от Tulosba Посмотреть сообщение
Сообщение от CHELOVEKPAUK
Как реализовать конструктор по умолчанию в классе manager?
А в 26 строке что по-вашему?
Сообщение от CHELOVEKPAUK
Как заменить закрытую часть abstr_emp в классе manager?
Закрытая (private) часть базового класса не видна в производном классе.
Я знаю про закрытую часть.

Возможно, я путаю определение и объявление, но мне нужно само тело функции написать.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
16.06.2014, 17:10
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
{}
а это что? не тело что ли?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.06.2014, 17:18
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
мне нужно само тело функции написать.
Ну так и пишите, если знаете, что он должен делать полезного. Но, т.к. в производном классе добавлено всего лишь одно поле и оно инициализировано в списки инициализации конструктора, то в теле как бы и нечего писать.
0
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.06.2014, 20:45  [ТС]
Цитата Сообщение от Tulosba Посмотреть сообщение
Ну так и пишите, если знаете, что он должен делать полезного. Но, т.к. в производном классе добавлено всего лишь одно поле и оно инициализировано в списки инициализации конструктора, то в теле как бы и нечего писать.
А как же инициализировать составляющую базового класса обьекта this полученным из параметра функции?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.06.2014, 20:54
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
А как же инициализировать составляющую базового класса обьекта this полученным из параметра функции?
Для инициализации базовой части вызывается нужный конструктор базового класса, который указывается в списке инициализации конструктора производного класса.
C++
1
Derived( /*params1*/ ) : Base ( /*params2*/ ) {}
Список параметров (params2) строится нужным образом из списка параметров (params1).
Но это уже не относится к теме. Т.к. это не конструктор по умолчанию.
0
 Аватар для CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
17.06.2014, 15:49  [ТС]
Цитата Сообщение от Tulosba Посмотреть сообщение
Сообщение от CHELOVEKPAUK
А как же инициализировать составляющую базового класса обьекта this полученным из параметра функции?
Для инициализации базовой части вызывается нужный конструктор базового класса, который указывается в списке инициализации конструктора производного класса.
Код C++
1
Derived( /*params1*/ ) : Base ( /*params2*/ ) {}
Список параметров (params2) строится нужным образом из списка параметров (params1).
Но это уже не относится к теме. Т.к. это не конструктор по умолчанию.
__________________

Все, меня осенило, позор мне, я имел ввиду конструктор копирования
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2014, 15:49
Помогаю со студенческими работами здесь

Для класса не существует конструктор по умолчанию
Ошибка (активно) E0291 для класса &quot;Apteka&quot; не существует конструктор по умолчанию Хотел посмотреть что у меня получается, а он ошибку...

Наследование классов. Копирование производных классов
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем класс А { int mA; ...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром?
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Определить конструктор для инициализации полей по умолчанию
У меня такое задание по лабу, кстати она самая сложная и последняя: дана структура: struct Student { char *LastName; ...

Для чего нужны конструктор с параметрами и по умолчанию
очень нужно подробное объяснение для чего нужны конструктор с параметрами и без. public Zdanie() // Конструктор без параметров ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru