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

В чем смысл полиморфизма - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ При считывании из файла последний элемент читается дважды http://www.cyberforum.ru/cpp-beginners/thread1501631.html
Всем доброго времени суток! Нашёл граблю. Считываю из файла слова, разделённые пробелами, в vector<string>. Для куска кода, которые по моему разумению должны работать одинаково, выдают разный...
C++ Зачем нужны дружественные функции Здравствуйте! Начал изучать "друзей" в С++, но в моём странном учебнике данная тема описывается буквально в 2-х абзацах. В одном абзаце даётся определение дружественных классов, в другом -... http://www.cyberforum.ru/cpp-beginners/thread1501629.html
Разобрать программу перевода в различные системы счисления C++
Здравствуйте.Вопрос такой:Есть задача написать программу для перевода из 16сс(системы счисления) в 10сс+есть решение. //Вопрос:x обозначает степень,и изначально он равен 0.При вводе в программу...
Считывание double чисел из txt в массив C++
Надо считать числа в массив double. Не использовать <iostream> и <fstream> и <iomanip>. Не работают, пробовала, все примеры которые находила используют их. Пробовала - Segm. fault и считывает...
C++ Как ковертировать из ASCII опять в string? http://www.cyberforum.ru/cpp-beginners/thread1501581.html
Всем доброго здравия. Нашел программу, которая переводит буквы строки в порядковые номера по таблице ASCII, с помощью функции length(). Подскажите пожалуйста существует ли функция, которая бы...
C++ При первом запуске нового проекта HelloWorld в IDE CLion возникает ошибка Добрый день! Установил IDE CLion. Установил компилятор. Первая загрузка с проектом HelloWorld. Выдает вот такое сообщение. Кто-нибудь может подсказать в чем проблема. подробнее

Показать сообщение отдельно
hoggy
6721 / 2906 / 499
Регистрация: 15.11.2014
Сообщений: 6,548
Завершенные тесты: 1
20.07.2015, 12:18
Цитата Сообщение от zss Посмотреть сообщение
никакого полиморфизма нет.
есть. статический.

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

но в данном случае он был реализован за счет приведения по иерархии наследования.
это работает, потому что сам по себе std::ostream не более, чем обертка,
которая делегирует задачу своему очень даже полиморфному внутреннему механизму буфера вывода.

http://www.cplusplus.com/reference/ios/ios/rdbuf/

Цитата Сообщение от zss Посмотреть сообщение
операция разыменования *os приводит к тому,
что этот метод вызывался бы как обычный, а не как виртуальный.
ничего подобного.

C++
1
2
3
4
5
IAnimal& reference = getAnimal();
 
reference.virtualMethod(); // <--- для ссылок динамический полиморфизм 
// работает точно так же
// как и для обычных указателей.
Добавлено через 2 минуты
Цитата Сообщение от zss Посмотреть сообщение
Вы продемонстрировали не полиморфизм, а родственность производных классов.
он продемонстрировал два принципиально разных поведения
(вывод в консоль, или вывод в файл),
осуществляемых через единый интерфейс для объектов разных типов.

это и есть красноречивый пример полиморфизма.


"родственность производных классов" - это конечно круто звучит.
учитывая, что так можно обозвать
любое проявление динамического полиморфизма,
осуществляемого посредством виртуальных функций-членов.
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.