Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
#1

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

16.06.2014, 16:54. Просмотров 324. Ответов 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? Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 16:54     Конструктор по умолчанию для производных классов
Посмотрите здесь:

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

Cделать конструктор по умолчанию и копирования для класса - C++
Вот у меня класс строка: class strg { char *str; int len; public: strg(); strg(const strg &amp;); }; реализация:

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

Как вызвать другой конструктор для уже созданного объекта конструктором по умолчанию? - C++
Есть класс в котором несколько конструкторов, Мне в некоторых местах нужно создавать объекты класса с конструктором по умолчанию для...

Сравнение производных классов - C++
Друзья! Пусть у меня есть базовый класс S. У него есть два наследника A и B. Как мне скидывать, например в set, указатели (шаредпэтэры...

Файлы и объекты производных классов - C++
Вопрос следующий: имеется два класса, базовый и производный. В файл бинарно записывается объект производного класса через указатель на...

Использование базовых и производных классов - C++
Не могу решить задачу с классами помогите с решением. Создать класс String – строка. Определить функции присваивания одной строки...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
16.06.2014, 16:58     Конструктор по умолчанию для производных классов #2
Так а тут по-твоему нет конструктора по-умолчанию для менеджер? Это не ты писал что ли?
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.06.2014, 17:00  [ТС]     Конструктор по умолчанию для производных классов #3
Мне нужно определение конструктора, я не знаю, как реализацию составить.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
16.06.2014, 17:00     Конструктор по умолчанию для производных классов #4
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Как реализовать конструктор по умолчанию в классе manager?
А в 26 строке что по-вашему?
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
Как заменить закрытую часть abstr_emp в классе manager?
Закрытая (private) часть базового класса не видна в производном классе.
P.S. еще и виртуальное наследование зачем-то.
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.06.2014, 17:02  [ТС]     Конструктор по умолчанию для производных классов #5
Цитата Сообщение от Tulosba Посмотреть сообщение
Сообщение от CHELOVEKPAUK
Как реализовать конструктор по умолчанию в классе manager?
А в 26 строке что по-вашему?
Сообщение от CHELOVEKPAUK
Как заменить закрытую часть abstr_emp в классе manager?
Закрытая (private) часть базового класса не видна в производном классе.
Я знаю про закрытую часть.

Возможно, я путаю определение и объявление, но мне нужно само тело функции написать.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
16.06.2014, 17:10     Конструктор по умолчанию для производных классов #6
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
{}
а это что? не тело что ли?
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
16.06.2014, 17:18     Конструктор по умолчанию для производных классов #7
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
мне нужно само тело функции написать.
Ну так и пишите, если знаете, что он должен делать полезного. Но, т.к. в производном классе добавлено всего лишь одно поле и оно инициализировано в списки инициализации конструктора, то в теле как бы и нечего писать.
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.06.2014, 20:45  [ТС]     Конструктор по умолчанию для производных классов #8
Цитата Сообщение от Tulosba Посмотреть сообщение
Ну так и пишите, если знаете, что он должен делать полезного. Но, т.к. в производном классе добавлено всего лишь одно поле и оно инициализировано в списки инициализации конструктора, то в теле как бы и нечего писать.
А как же инициализировать составляющую базового класса обьекта this полученным из параметра функции?
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
16.06.2014, 20:54     Конструктор по умолчанию для производных классов #9
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
А как же инициализировать составляющую базового класса обьекта this полученным из параметра функции?
Для инициализации базовой части вызывается нужный конструктор базового класса, который указывается в списке инициализации конструктора производного класса.
C++
1
Derived( /*params1*/ ) : Base ( /*params2*/ ) {}
Список параметров (params2) строится нужным образом из списка параметров (params1).
Но это уже не относится к теме. Т.к. это не конструктор по умолчанию.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 15:49     Конструктор по умолчанию для производных классов
Еще ссылки по теме:

Множественное наследование. Построение производных классов - C++
Необходимо построить иерархию классов согласно схемы наследования. Каждый класс должен содержать инициализирующий конструктор и функцию...

Функция создающая объекты производных классов - C++
Функция получает входной параметр - целое число. Если оно равно 0, создается новый объект - окружность, если равно 3 - создается...

Массив объектов разных производных классов - C++
Задача такая: базовый класс - фигура, производные классы - круг, треугольник и т.п. Пользователь выбирает, какие фигуры будут на экране и...

Для структуры "Дата" реализовать конструктор по умолчанию, выводящий текущую дату - C++
Преподаватель дал задние,чтобы в структуре Date был конструктор по умолчанию.который выводит текущую дату.сказал что для этого туда надо...

Для класса "R" не существует конструктор по умолчанию - C++
Подскажите, что не так. И как здесь пользоваться cout? Чтобы вывести с. Просто я вбивал, а он не работает. И где его вообще вбивать нужно? ...


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

Или воспользуйтесь поиском по форуму:
CHELOVEKPAUK
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
17.06.2014, 15:49  [ТС]     Конструктор по умолчанию для производных классов #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Сообщение от CHELOVEKPAUK
А как же инициализировать составляющую базового класса обьекта this полученным из параметра функции?
Для инициализации базовой части вызывается нужный конструктор базового класса, который указывается в списке инициализации конструктора производного класса.
Код C++
1
Derived( /*params1*/ ) : Base ( /*params2*/ ) {}
Список параметров (params2) строится нужным образом из списка параметров (params1).
Но это уже не относится к теме. Т.к. это не конструктор по умолчанию.
__________________

Все, меня осенило, позор мне, я имел ввиду конструктор копирования
Yandex
Объявления
17.06.2014, 15:49     Конструктор по умолчанию для производных классов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru