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

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

16.06.2014, 16:54. Просмотров 1633. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2014, 16:54
Ответы с готовыми решениями:

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

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

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

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

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

Возможно, я путаю определение и объявление, но мне нужно само тело функции написать.
0
3284 / 2668 / 721
Регистрация: 25.03.2012
Сообщений: 9,623
Записей в блоге: 1
16.06.2014, 17:10 6
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
{}
а это что? не тело что ли?
0
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.06.2014, 17:18 7
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
мне нужно само тело функции написать.
Ну так и пишите, если знаете, что он должен делать полезного. Но, т.к. в производном классе добавлено всего лишь одно поле и оно инициализировано в списки инициализации конструктора, то в теле как бы и нечего писать.
0
13 / 3 / 2
Регистрация: 01.08.2013
Сообщений: 332
Записей в блоге: 1
16.06.2014, 20:45  [ТС] 8
Цитата Сообщение от Tulosba Посмотреть сообщение
Ну так и пишите, если знаете, что он должен делать полезного. Но, т.к. в производном классе добавлено всего лишь одно поле и оно инициализировано в списки инициализации конструктора, то в теле как бы и нечего писать.
А как же инициализировать составляющую базового класса обьекта this полученным из параметра функции?
0
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
16.06.2014, 20:54 9
Цитата Сообщение от CHELOVEKPAUK Посмотреть сообщение
А как же инициализировать составляющую базового класса обьекта this полученным из параметра функции?
Для инициализации базовой части вызывается нужный конструктор базового класса, который указывается в списке инициализации конструктора производного класса.
C++
1
Derived( /*params1*/ ) : Base ( /*params2*/ ) {}
Список параметров (params2) строится нужным образом из списка параметров (params1).
Но это уже не относится к теме. Т.к. это не конструктор по умолчанию.
0
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).
Но это уже не относится к теме. Т.к. это не конструктор по умолчанию.
__________________

Все, меня осенило, позор мне, я имел ввиду конструктор копирования
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2014, 15:49

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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