1 / 1 / 0
Регистрация: 24.08.2016
Сообщений: 14
1

Инициализация членов дочернего класса членами класса родителя

18.09.2016, 13:15. Показов 1344. Ответов 5
Метки нет (Все метки)

Есть уже созданный класс-родитель A. Как эффективно инициализировать дочерний класс B членами класса A?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2016, 13:15
Ответы с готовыми решениями:

Задачка для новичков #2: вывести в методе класса-родителя значение данных-членов из дочернего класса
Вдохновленный соседней темой тоже решил задать свой вопрос таким же начинающим программистам как и...

Создать класс CheckerBoard (особенности строения класса - инициализация константных членов класса)
Вот код: #include <iostream> #include <string> using namespace std; const int xSize = 1;...

Как скопировать объект дочернего класса из динамической памяти в указатель родителя?
class Parent { }; class Child : public Parent { public: int x; }; int main() { Child*...

Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса)
Всем доброго времени суток! Пытаюсь разобраться как работает приведенный мной код. Конкретно,...

5
1386 / 1016 / 323
Регистрация: 28.07.2012
Сообщений: 2,804
18.09.2016, 13:25 2
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

SomeDay,
1) Можешь реализовать соответствующий конструктор (или оператор присваивания) в дочернем классе B.
2) Напрямую скастовать B к указателю (или ссылке) на A и вызвать оператор присваивания.
0
Эксперт С++
8718 / 4299 / 957
Регистрация: 15.11.2014
Сообщений: 9,743
18.09.2016, 13:26 3
Цитата Сообщение от SomeDay Посмотреть сообщение
Как эффективно инициализировать дочерний класс B членами класса A?
если под "дочерним классом" подразумевается "базовый класс", тогда к моменту инициализации родителя,
он уже является проинициализированным.
в этом случае ответ на ваш вопрос - никак. эффективно сделать такое не получится.
но если очень сильно хочется, то можно сделать через жепу.

если под "дочерним классом" подразумевается нечто иное,
тогда нужно уточнить, что именно.
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
18.09.2016, 13:39 4
Что-то вопросы вообще тупые пошли. В конструкторе класса-наследника("дочерний класс") пишешь инициализацию переменных да и все! Вчера вообще вопрос был: как завести переменные во входные скобки функции. До сих пор от шока отойти не могу.
0
1 / 1 / 0
Регистрация: 24.08.2016
Сообщений: 14
18.09.2016, 14:50  [ТС] 5
nonedark2008,
1)создал move-constructor в классе A: A(const A& a);
2)скастил константную ссылку на класс A;
3)синицировал класс B константной ссылкой на A;

Вопрос: будет ли работать move-constructor класса A?
0
1386 / 1016 / 323
Регистрация: 28.07.2012
Сообщений: 2,804
18.09.2016, 16:48 6
SomeDay, можешь более подробно описать то, чего ты хочешь добиться?
Я правильно понимаю:
1) У тебя есть объект класса A
2) Есть наследник класса A, называемый классом B
3) Ты хочешь создать объект класса B, инициализировав его при этом ранее созданным объектом класса A
Так?

Цитата Сообщение от SomeDay Посмотреть сообщение
создал move-constructor в классе A: A(const A& a);
Это конструктор копирования. Конструктор перемещения (move-constructor) - это нечто A(A && a);, но он тебе не особо нужен.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2016, 16:48
Помогаю со студенческими работами здесь

Инициализация членов класса нулями
Необходимо инициализировать члены класса нулями. class ID { public: int GetKey() { return...

Инициализация статических членов класса
Непонятно, почему статические члены класса нельзя инициализировать при помощи вот такого...

Инициализация членов в объявлении класса
В классе: class peltier { public: material p = material('p'); material n = material('n');...

Конструктор внутри класса, поля которого являются членами другого класса
Вот фрагмент кода. class Class_Figure { Class_Triangle tr1; Class_Circle cr1; public:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru