Форум программистов, компьютерный форум CyberForum.ru

Смысл использования полиморфизма - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Поиск максимума и локальных минимумов в массиве http://www.cyberforum.ru/cpp-beginners/thread1746132.html
Помогите решить задачу, пожалуйста В массиве х, из n эл-ов, найти: Максимум(значение и номер). Два последовательных минимума.
C++ Работа с текстовым файлом (запись/чтение) Здравствуйте, дорогие форумчане! Задали сделать программу, которая должна создавать файл, а потом совершать его чтение. Само задание : "Чемпионат города по футболу проводится по 2 группам: сильная (8 команд) и слабая (8 команд). Замещение мест в сильной группе проводится по результатам переходного турнира, в котором участвуют 3 худших команды из сильной группы и 3 лучших из слабой. Составить... http://www.cyberforum.ru/cpp-beginners/thread1746072.html
C++ В массиве определить первый положительный элемент и произведение последующих
Выходные данные : целочисленный массив В размером kn , где k = 4, n = 5 Определить номер первого положительного элемента и произведение следующих элементов
Одновременное нажатие на несколько кнопок при выводе ответа в MessageBox C++/CLI WinForms
В форме есть TextBox и 3 кнопки - "x^3", "x^6", "x^9". Нужно, чтоб ответы выводились в MessageBox так, чтобы можно было одновременно нажимать на несколько кнопок. Помогите, пожалуйста :)
C++ Чтение из файла определенного поля без записи в буфер предыдущих полей http://www.cyberforum.ru/cpp-beginners/thread1745989.html
как на чистом си считать конкретное поле при этом не заводить переменные. формат такой: %d %s %c %d ..... если использовать fscanf(file,"%d", ЗДЕСЬ мы не указываем переменную куда пишется считанное число), то падает с segfault. переменная обязательно нужна, иначе не работает. Я не хочу заводить лишние переменные, а просто хочу считать результат 4 поля. то есть последней %d. fseek не...
C++ Переставить строки матрицы так, чтобы суммы элементов строк были расположены в порядке их возрастания Задать двумерный массив размерами m и n. Обработать массив согласно заданию, вывести на печать исходный и обработанный массивы. «m=4,n=5.Переставить строки массива так, чтобы сумма элементов строк были расположены в порядке их возрастания. подробнее

Показать сообщение отдельно
Dobbyman
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 4
26.05.2016, 14:03     Смысл использования полиморфизма
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
35
36
37
38
39
40
#include <iostream>
 
using namespace std;
 
class A{
 
public:
    virtual void speak() {}
 
};
 
class B: public A{
public:
    void speak() {
        cout << "class a" << endl;
    }
 
};
 
class C: public A{
public:
    void speak() {
        cout << "class b" << endl;
    }
 
};
 
int main() {
 
    B lo;
    C na;
 
    A *en1 = &lo;
    A *en2 = &na;
 
    en1->speak();
    en2->speak();
 
    return 0;
}
Я не могу никак понять, для чего он нужен. Это - пример полиморфизма через виртуальные функции.
Мы создаем объекты lo и na, после создаем указатели на класса A и присваем им адреса наших предыдущих объектов, в результате, благодаря нашему виртуальному методу speak(), уникальные реализации классов-наследников доступны через базовый класс.
Это все замечательно, но почему? Каждый раз, чтобы это сделать, нужно создавать en1,en2 , хотя т.к. уже есть наследование, то методы доступны и через lo и na. Да, мы реализовали доступ через базовый класс. Но зачем?
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru