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

Для чего виртуальные функции? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обнаружением нулевого указателя http://www.cyberforum.ru/cpp-beginners/thread1001175.html
Делаю алгоритм Хаффмана. Возникла проблема при построении таблицы соответствий. void MakeT (Node* root){ if(root->L!=NULL) {//проблемная строка code.push_back(0); MakeT(root->L); } if(root->R!=NULL) { code.push_back(1); MakeT(root->R);
C++ Не роботает сортировка Проблема в сортировке( программа проходит, но ничего полезного не делает), ее, мне так кажется, надо реализовать с помощью адресов. Буду рада всем вашым советам!!! main # include "class_m.h" # include <iostream> using namespace std; void main() http://www.cyberforum.ru/cpp-beginners/thread1001169.html
C++ Чтение из текстового файла
Есть список автомобилей с параметрами (марка ,цвет ,стоимость и так далее ) , хранившиеся в текстовом файле . Нужно написать программу в которой делается следующее. корректировку или дополнение списка с клавиатуры; сортировку по названию марки,цвета, стоимости; вывод на экран информации о автомобиле, название которого введено с клавиатуры; запись списка в файл под тем же или новым...
Выявление ошибки C++
Помогите, пожалуйста, исправить программу (в функции treug в качестве параметра нужно использовать указатель *p), затем его использовать при вызове функции. Заранее большое спасибо. #include <iostream.h> #include <stdio.h> //vvod-vyvod #include <math.h> void treug(float a, float b, float c, int *p) { (*p)=0; if ((a+b>c) || (b+c>a) || (c+a>b)) {(*p)=1;
C++ Как создать динамический двумерный массив http://www.cyberforum.ru/cpp-beginners/thread1001133.html
Можно ли создать на С++ динамический двухмерный масив? Как? int z , x ; cin >> z ; cin >> x ; int *arr = new int(z); int *arr1 = new int(x); так не получаеться!
C++ Удаление последнего слова из строки Написать программу удаления последнего слова из строки. Заранее благодарю. подробнее

Показать сообщение отдельно
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
08.11.2013, 09:42     Для чего виртуальные функции?
Виртуальные функции - это инструмент, с помощью которого реализуется полиморфизм, т.е. множество реализаций (в потомках базового класса) и один интерфейс (одно имя метода для всех потомков). Базовый класс, в котором есть только определение виртуального метода без реализации называется абстрактным классом.
C++
class Animal {
public:
  virtual void setfood() { cout << "Ошибка. Неизвестный зверь\n"; }
};
 
class Dog : public Animal {
public:
  virtual void setfood() { cout << "дать педигри\n"; }
};
 
class Cat : public Animal {
public:
  virtual void setfood() { cout << "дать вискас\n"; }
};
 
 
int main()
{
  Animal *animal;
  Dog dog;
  Cat cat;
 
  animal->setfood();
 
  animal = &dog;
  animal->setfood(); // или dog.setfood();
 
  animal = &cat;
  animal->setfood(); // или cat.setfood();
 
}
Добавлено через 3 минуты
Цитата Сообщение от Alex0491 Посмотреть сообщение
Для того чтобы функцию можно переопределить в наследнике
Переопределить можно, но без виртуальности переопределение затронет не конкретного потомка, а всех подряд.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru