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

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

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

С++ и полиморфизм - C++

04.08.2015, 22:34. Просмотров 988. Ответов 27
Метки нет (Все метки)

Здравствуйте. Ответьте пожалуйста на несколько вопросов:

1. Что такое абстрактная функция простыми словами?

2. Что такое виртуальная функция простыми словами ?

3. В чем разница между виртуальной и абстрактной функциями ? Я слышал что это почти одно и тоже.

4. Абстрактный класс тот, в котором есть хотя бы одна абстрактная функция?

5. В чем смысл чистой функции ? Почему нельзя сделать обычную функцию и перегрузить в наследнике?

6. Какое применение у чистой функции ?

7. Полиморфизм иными словами. А то в Википедии не слишком понятно. Мне именно не понятно: чем отличается наследование от полиморфизма? Ведь в первом используем функции и свойства базового класса и во втором также.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2015, 22:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С++ и полиморфизм (C++):

полиморфизм - C++
Всем привет, изучаю С++ недавно, я новичек в этом языке программирования, читаю про ООП, понял все за исключением полиморфизма, что делает...

полиморфизм=( - C++
Ув.Знатаки Доброго времени суток!Вот есть проблемка с написание полиморфизма,вот написал класс,написал наследование,а вот как теперь сюда...

Полиморфизм в с++ - C++
Вообщем я делал программу,изначально в ней было реализовано наследование.Затем дали задание реализовать полиморфзим для функции Scale для...

Полиморфизм - C++
Сколько я не читал книг и уроков по С++-программированию, я так и не смог понять что такое полиморфизм. Можно ли как-то просто и...

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

Полиморфизм c++ - C++
Построить массив из указателей (базового типа) на объекты обоих классов. Выбрать объекты производного класса, отсортировать их и сложить...

27
Ferrari F1
613 / 507 / 101
Регистрация: 27.01.2015
Сообщений: 2,958
Записей в блоге: 1
Завершенные тесты: 1
04.08.2015, 22:35 #2
Цитата Сообщение от uLong Посмотреть сообщение
Что такое абстрактная функция простыми словами?
В си++ вроде нет такого понятия, по крайней мере я слышал только про абстрактный класс
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
04.08.2015, 22:44 #3
Цитата Сообщение от uLong Посмотреть сообщение
Что такое абстрактная функция простыми словами?
первый раз слышу такое.
Цитата Сообщение от uLong Посмотреть сообщение
В чем разница между виртуальной и абстрактной функциями ? Я слышал что это почти одно и тоже.
Цитата Сообщение от uLong Посмотреть сообщение
Абстрактный класс тот, в котором есть хотя бы одна абстрактная функция?
см. п. 1

Добавлено через 6 минут
Цитата Сообщение от uLong Посмотреть сообщение
2. Что такое виртуальная функция простыми словами ?
Википедия: Виртуальный метод
Цитата Сообщение от uLong Посмотреть сообщение
В чем смысл чистой функции ? Почему нельзя сделать обычную функцию и перегрузить в наследнике?
Чисто виртуальная? Класс будет абстрактным.
Цитата Сообщение от uLong Посмотреть сообщение
6. Какое применение у чистой функции ?
реализация интерфейсов
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
04.08.2015, 23:17 #4
Цитата Сообщение от uLong Посмотреть сообщение
Полиморфизм
Вот мою программку можете поизучать. Там есть полиморфизм, и абстрактные классы, и виртуальные функции, в том числе и чистые.
0
Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 127
04.08.2015, 23:30 #5
Цитата Сообщение от uLong Посмотреть сообщение
1. Что такое абстрактная функция простыми словами?
То же самое, что и абстрактный класс. Она вроде как есть, но её нет.
C++
1
virtual void function() = 0;
Если память мне не изменяет, любой класс с такой функцией, автоматически, абстрактный.
0
Ferrari F1
613 / 507 / 101
Регистрация: 27.01.2015
Сообщений: 2,958
Записей в блоге: 1
Завершенные тесты: 1
04.08.2015, 23:32 #6
Цитата Сообщение от Eraston Посмотреть сообщение
virtual void function() = 0;
написаное тобой называется чистой виртульной функцией
0
Eraston
53 / 10 / 2
Регистрация: 09.09.2014
Сообщений: 127
04.08.2015, 23:49 #7
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
написаное тобой называется чистой виртульной функцией
Это также называется абстрактной функцией.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
05.08.2015, 00:06 #8
Цитата Сообщение от Eraston Посмотреть сообщение
Это также называется абстрактной функцией.
pure virtual function, но не abstract function. Тоже самое, что и member function, но не method

И если ТС называет чистую виртуальную функцию абстрактной, то что тогда понимается в вопросах ТС под чистой функцией?
0
kuza84
-4 / 23 / 4
Регистрация: 25.04.2013
Сообщений: 195
05.08.2015, 00:18 #9
Цитата Сообщение от Mr.X Посмотреть сообщение
Вот мою программку можете поизучать. Там есть полиморфизм, и абстрактные классы, и виртуальные функции, в том числе и чистые.
и она еще кучу ошибок вываливает при компиляции на wxDev-C++ и там ногу сломаешь, ничего непонятно.
0
smartpointer
68 / 62 / 24
Регистрация: 17.02.2014
Сообщений: 262
05.08.2015, 00:35 #10
Цитата Сообщение от uLong Посмотреть сообщение
3. В чем разница между виртуальной и абстрактной функциями ? Я слышал что это почти одно и тоже.
Виртуальная функция не обязывает наследника реализовывать ее, чистая вирутальная функция должна быть обязательна реализована в классе-наследнике.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4196 / 1844 / 198
Регистрация: 20.02.2013
Сообщений: 4,990
Записей в блоге: 22
05.08.2015, 04:30 #11
Цитата Сообщение от kuza84 Посмотреть сообщение
при компиляции на wxDev-C++
Скачайте уже себе 2015 студию. Или QtCreator. Ну или Code::Blocks, хотя бы.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
05.08.2015, 06:39 #12
Цитата Сообщение от smartpointer Посмотреть сообщение
чистая вирутальная функция должна быть обязательна реализована в классе-наследнике.
Только в том случае, если вы собираетесь создавать его объекты.

Добавлено через 3 минуты
Цитата Сообщение от kuza84 Посмотреть сообщение
и там ногу сломаешь, ничего непонятно.
Не, я наоборот старался сделать программу попроще и самодокументируемой.
Ну, обычно, когда разбираешь что-то сложное для себя - на этом и учишься. А что непонятно-то?

Добавлено через 3 минуты
uLong, старайтесь придерживаться терминологии стандарта, а не Википедии. Если у вас в терминах сумбур вместо музыки, то и в понятиях будет то же самое.

Добавлено через 6 минут
Цитата Сообщение от Croessmah Посмотреть сообщение
pure virtual function, но не abstract function. Тоже самое, что и member function, но не method
Да-да, и вот поля класса еще какие-то выдумали.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4196 / 1844 / 198
Регистрация: 20.02.2013
Сообщений: 4,990
Записей в блоге: 22
05.08.2015, 07:22 #13
Цитата Сообщение от Croessmah Посмотреть сообщение
Тоже самое, что и member function, но не method
Функция-член (member function) и метод класса (class method) - это ж, вроде, синонимы?

Добавлено через 5 минут
Ну да, вот у Праты 10 глава начинается:
Цитата Сообщение от Stephen Prata
Class methods (also called class function members)
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
05.08.2015, 08:20 #14
Цитата Сообщение от gru74ik Посмотреть сообщение
Функция-член (member function) и метод класса (class method) - это ж, вроде, синонимы?
В разных языках программирования они по-разному называются. Невежды таскают термины из одного языка в другой, засоряя терминологию. В С++ - функция-член.
Цитата Сообщение от gru74ik Посмотреть сообщение
у Праты
Автор терминологии С++ - Страуструп.
0
gru74ik
Модератор
Эксперт CЭксперт С++
4196 / 1844 / 198
Регистрация: 20.02.2013
Сообщений: 4,990
Записей в блоге: 22
05.08.2015, 08:30 #15
Цитата Сообщение от Mr.X Посмотреть сообщение
Автор терминологии С++ - Страуструп.
Опять Вы за своё! Не проверите информацию, и начинаете всем тыкать в нос "википедия, фу-фу-фу, Прата, невежды". Читайте автора терминологии ("The С++ Programming Language", 4th Edition, page 586):
Цитата Сообщение от Bjarne Stroustrup
A virtual member function is sometimes called a method.
0
05.08.2015, 08:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2015, 08:30
Привет! Вот еще темы с ответами:

Полиморфизм - C++
В одной дешевой книжке про него пишут а в другой дорогой нет и понять я почему то немогу точно как и для чего он нужен

Полиморфизм - C++
Я хотел реализовать множество, используя множественное наследование, но когда написал template <class T> class set { protected: ...

Полиморфизм - C++
Всем доброго времени суток.Сразу к делу. Если описывать с помощью полиморфизма подклассы и потом динамично их создавать ,то можно вызывать...

Полиморфизм - C++
Здравствуйте :) Я пытался читать про полиморфизм. Читал-читал, но не очень дошло. Понял, что можно переопределить виртуальную функцию...


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

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

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