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

Не работат полиморфизм - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры и функции http://www.cyberforum.ru/cpp-beginners/thread857673.html
В отмеченных строках пишет, что не видит ни а, ни n, ни j. Почему? struct point { int x, y, z; }; double sumOfDistances (point *a, int n, point a){ double summa=0; for (int...
C++ Turbo C++ 3.0 Compiler не видит библиотеки Совсем никаких, хотя вроде все подключено. Что можно сделать? http://www.cyberforum.ru/cpp-beginners/thread857664.html
Хеширование элементарной базы данных C++
Товарищи, усиленно прошу помощи!!! Часть программы уже написана, но как ее закончить или изменить, чтобы все работало верно я не знаю. Точнее есть идеи, но реализовать я их не могу :( Составить...
Структуры. База данных о автомобилях C++
База данных содержит информацию о автомобилях. Модель (ключевое поле, имеющее уникальное неповторяющиеся значение), производитель (поле используется для отбора элементов), год выпуска и мощность...
C++ Конституционно-правовое законодательство на C++ http://www.cyberforum.ru/cpp-beginners/thread857652.html
Здравствуйте! Помогите написать программу на C++ по конституционно-правовому законодательству
C++ Как пересчитать одно в другое? b|g 0|0000000000 1|0000000001 2|0000000011 3|0000000111 4|0000000101 5|0000000100 6|0000001100 7|0000001101 8|0000001111 подробнее

Показать сообщение отдельно
Убежденный
Системный программист
Эксперт С++
15633 / 7142 / 1130
Регистрация: 02.05.2013
Сообщений: 11,582
Записей в блоге: 1
Завершенные тесты: 1
06.05.2013, 20:14
Вы забыли указать virtual в объявлении метода в базовом классе.
Это во-первых. А во-вторых, полиморфизм работает лишь тогда,
когда метод вызывается через указатель или ссылку на базовый класс.

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
#include <iostream>
 
class parent
{
public:
    virtual void show()
    {
        std::cout << "I am parent" << std::endl;
    }
 
    virtual ~parent() {}
};
 
class child : public parent
{
public:
    void show()
    {
        std::cout << "I am child" << std::endl;
    }
};
 
int main()
{
    parent *pParent = new child();
    pParent->show();
    delete pParent;
    return 0;
}
> "I am child"
Добавлено через 4 минуты
И в классах, которые удаляются через полиморфную базу, обязательно должен
быть виртуальный деструктор.
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru