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

виртуальная функция - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача с olympiads.ru http://www.cyberforum.ru/cpp-beginners/thread770616.html
Всем привет. Столкнулся с проблемой при решении задачи E "Распродажа" с сайла olympiads.ru (http://olympiads.ru/zaoch/2012-13/problems/index.shtml) Написал код: #include <iostream> #include...
C++ Определить треугольники минимальной и максимальной площади, которые можно построить из отрезков 13. Известны длины отрезков a, b, c и d. Определить треугольники минимальной и максимальной площади, которые можно построить из этих отрезков. помогите решить эту задачу с помощью <stdio.h>... http://www.cyberforum.ru/cpp-beginners/thread770609.html
Укажите путь заблудшему C++
Есть строка вида "Alex Johnson|1234678901\nBill Gates|548161198\n" - т.е. "<Абонент>|<номер телефона>\n...". Написал функцию которая принимает в качестве параметра эту строку и возвращает массив...
в проекте - надо в проекте win32api вынести все в другой *cpp* а не получаеться C++
определил функцию в другом спп и в основном ругается компилятор
C++ Определить треугольники минимальной и максимальной площади http://www.cyberforum.ru/cpp-beginners/thread770485.html
Известны длины отрезков a, b, c и d. Определить треугольники минимальной и максимальной площади, которые можно построить из этих отрезков.
C++ Определить, пересекаются ли парабола и прямая Определите, пересекаются ли парабола у=cx2+dx+f и прямая y=ax+b. При положительном ответе найти точки пересечения. подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
24.01.2013, 14:15
Сутьtm виртуальных функций не в этом.
Упрощенно говоря, суть виртуальных методов в том, чтобы вызвать метод потомка из объекта класса предка.

Например.
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
#include <iostream>
 
class Human {
 public:
  virtual ~Human() {} // в целом, нет необходимости в данном примере
                      // но чтобы уж компилятор не ругался...  
  virtual const char *gender() const = 0;
};
 
class Male : public Human {
 public:
  virtual const char *gender() const { return "male"; }
};
 
class Female : public Human {
 public:
  virtual const char *gender() const { return "female"; }
};
 
int main(int argc, char **argv) {
 
  for (int i = 0; i < 100; ++i) {
    Human *human;
    if (i % 2)
      human = new Male;
    else
      human = new Female;
    // вызываем метод класса Human,
    // но вызывается метод класса Male или Female,
    // в зависимости от того, какой обьект создался выше
    std::cout << human->gender() << std::endl;
    delete human;
  }
    
  return 0;
};
Добавлено через 58 секунд
Цитата Сообщение от m1ster Посмотреть сообщение
вопрос такой если я вызову функцию к элементу типа класса N,то у меня выведет a b c d
или c d?
Выведет c d, потому что будет вызван метод потомка.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru