Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
#1

объясните по полиморфизму - C++

18.09.2013, 15:42. Просмотров 366. Ответов 10
Метки нет (Все метки)

здравствуйте,

не могу разобраться с следующей деталью:
есть базовый класс, и несколько производных от него классов. У всех производных классов есть указатель на список. Могу ли я определить метод добавления элемента в список только в базовом классе?

пытался сделать, но при вызове "производный класс.insert(данные);", он пытается добавить в список базового класса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2013, 15:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос объясните по полиморфизму (C++):

Вопрос по динамическому полиморфизму - C++
Здравствуйте. Прочитал про статический и динамический полиморфизмы. Возник такой вопрос. Имеем код: #include <iostream> ...

Какое отношение имеет перегрузка к полиморфизму? - C++
прочитал в одном учебнике: (глава посвящена функциям. Подраздел: Перегрузка функций) "В результате перегрузки функций происходит явление,...

Задачки по наследованию, полиморфизму, GUI, потокам и т.п - Java SE
Всем привет. Хотелось бы по мере изучения концепции ЯП Java подкреплять изученный теоретический материал практикой. Был бы крайне...

Объясните - Visual Basic
Помогите пожалуйста!) Я не могу понять как мне при сохранении текстового файла и замене его фона, чтобы загружался этот фон???? Вся...

Не объясните - MS Access
Не объясните,что означает вот это сообщение:

ОБЪЯСНИТЕ - Visual C++
Побудьте моим учителем!!! Объясните мне эту программу после int main ПОСТРОЧНО!!! #include <cmath> #include <cstdio> #include...

10
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
18.09.2013, 16:10 #2
Цитата Сообщение от wolflik Посмотреть сообщение
он пытается добавить в список базового класса.
Как понять? Получается, что производный класс содержит и свой список, и список, который наследуется из базового класса?
0
Raali
638 / 342 / 42
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
18.09.2013, 16:11 #3
лучше сразу код давайте
0
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 16:21  [ТС] #4
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Как понять? Получается, что производный класс содержит и свой список, и список, который наследуется из базового класса?
получается так, да
есть ли возможность убрать список с базового класса, но определение метода, работающего со списком в производных классах оставить в базовом?
0
Raali
638 / 342 / 42
Регистрация: 06.07.2013
Сообщений: 1,107
Завершенные тесты: 1
18.09.2013, 16:32 #5
Цитата Сообщение от wolflik Посмотреть сообщение
он пытается добавить в список базового класса.
как он пытается добавить в список базового как вы об этом узнаете?
0
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
18.09.2013, 16:44 #6
Цитата Сообщение от wolflik Посмотреть сообщение
получается так, да
есть ли возможность убрать список с базового класса, но определение метода, работающего со списком в производных классах оставить в базовом?
Нельзя, так как чтобы обращаться к списку в методе класса, он (список) как минимум должен быть в этом классе. Можно метод сделать чисто-виртуальным, т.е. без реализации, но в производных классах его придется переопределить. Да и что мешает сделать этот список в базовом классе, если производные автоматом будут наследовать его?
0
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 16:55  [ТС] #7
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Нельзя, так как чтобы обращаться к списку в методе класса, он (список) как минимум должен быть в этом классе. Можно метод сделать чисто-виртуальным, т.е. без реализации, но в производных классах его придется переопределить. Да и что мешает сделать этот список в базовом классе, если производные автоматом будут наследовать его?
хорошо. В базовом определю список, которые унаследуют производные. Но методы, как ни крути, все равно придется переопределять для каждого производного класса?

я это для чего: например от базового наследуем штук 10 производных классов. И методы работы со списком в них одинаковые. Хотелось бы опередлить их один раз.
0
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
18.09.2013, 16:57 #8
Цитата Сообщение от wolflik Посмотреть сообщение
хорошо. В базовом определю список, которые унаследуют производные. Но методы, как ни крути, все равно придется переопределять для каждого производного класса?

я это для чего: например от базового наследуем штук 10 производных классов. И методы работы со списком в них одинаковые. Хотелось бы опередлить их один раз.
Так определите один метод в базовом классе. В производных он тоже будет наследоваться
1
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 17:01  [ТС] #9
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
Так определите один метод в базовом классе. В производных он тоже будет наследоваться
а после этого базовый можно будет определить абстрактным?
0
gray_fox
What a waste!
1536 / 1241 / 71
Регистрация: 21.04.2012
Сообщений: 2,608
Завершенные тесты: 3
18.09.2013, 17:16 #10
Цитата Сообщение от wolflik Посмотреть сообщение
а после этого базовый можно будет определить абстрактным?
можно, всмысле базовый класс определить абстрактным
0
wolflik
0 / 0 / 0
Регистрация: 20.06.2012
Сообщений: 8
18.09.2013, 17:31  [ТС] #11
спасибо, все получилось.
0
18.09.2013, 17:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2013, 17:31
Привет! Вот еще темы с ответами:

Объясните - Delphi
Доброго времени суток! Прошу, на русском объясните, что делает следующий код: s:=Chr( Ord(s)+Ord(k)mod 256);

Объясните! - Сети
192.168.0.9 255.255.255.248 192.168.0.14 255.255.255.252 Будет ли работать? какой дипозон? объясните ...

объясните - Pascal
что значит ошибка 207 оштбочная операция с плавающей запятой

объясните :( - Pascal
объясните как работает эта программа пожалуйста :( var sum,mult,n,k:integer; f1,f2:text; begin assign(f1,'input.txt'); ...


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

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

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