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

РАБОТА С ВИРТУАЛЬНЫМИ ФУНКЦИЯМИ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обработка строк в С++ http://www.cyberforum.ru/cpp-beginners/thread85506.html
Здравствуйте, а можете помочь решить такую задачу на С++, пожалуйста, очень нужно) Дана строка, представляющая предложение. Слова в предложении состоят из маленьких латинских букв. Между словами...
C++ Функция, которая увеличивает на Т секунд время Описать процедуру IncTime (H, M, S, T), которая увеличивает на Т секунд время, заданное в часах Н, минутах М и секундах S (H, M и S- входные и выходные параметры, Т- входной параметр; все параметры... http://www.cyberforum.ru/cpp-beginners/thread85496.html
C++ Оформление ФУНКЦИИ
Дан двумерный массив X. Cформировать одномерный массив Y, для элементов которого выполняется условие: 0<cos(Xij)<корня 3/2. Оформить в виде ФУНКЦИИ. #include<iostream.h> #include<math.h>...
C++ Для данных матриц А и В проверить соотношение А*В=Е
Для данных 2х матриц А и В проверить соотношение А*В=Е. (посути матрицы квадратные) Е - единичная матрица, тобиш матрица у которой на главной диагонали единицы (1) а в остальных ячейках нули (0)....
C++ Просто нужно!!! http://www.cyberforum.ru/cpp-beginners/thread85470.html
Буду краток: необходимо Умножить матрицу на себя транспонированую!!!(без хранения транспонированной) Как в вышмате это сделать я понимаю, а вот на С как это выглядит, не пойму!!! Кто чем может_)))
C++ помогите! Три друга были свидетелями ДТП. Первый заметил, что номер на-рушителя делится на 2, 7 и 11. Второй запомнил, что в записи номера участвуют всего две различные цифры, а третий – что сумма цифр рав-на... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18383 / 6431 / 441
Регистрация: 30.03.2009
Сообщений: 17,850
Записей в блоге: 28
14.01.2010, 19:39
Подведя итог (с чего началась вся бодяга), следующая мысль является правильной (т.е. является "хорошим" стилем программирования)

Цитата Сообщение от zim22 Посмотреть сообщение
угу. оно не нужно. но для удобства чтения его лучше писать. чтобы долго не думать - виртуальная ли функция это или обычная
---------

А эта мысль правильной была только в концептуальном смысле, но ошибочной с точки зрения реализации языка Си++

Цитата Сообщение от Evg Посмотреть сообщение
Genius Ignat, если твой пример отобразить на поставленную задачу, то в производных классах при описании функции f слово 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
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
 
class T1
{
  public:
    T1(){}
    virtual void func (void) { std::cout << "T1::func()\n"; }
};
 
class T2 : public T1
{
  public:
    T2(){}
    void func (void) { std::cout << "T2::func()\n"; }
};
 
class T3 : public T2
{
  public:
    T3(){}
    void func (void) { std::cout << "T3::func()\n"; }
};
 
int
main (void)
{
  T2 *t2 = new T2;
  T3 *t3 = new T3;
  
  t2->func();
  ((T1*)t2)->func();
 
  std::cout << "=====\n";
  
  t3->func();
  ((T2*)t3)->func();
  ((T1*)t3)->func();
 
  return 0;
}
имеем выдачу

Код
T2::func()
T2::func()
=====
T3::func()
T3::func()
T3::func()
Последние три строки говорят о том, что функция T2::func хоть и описана без слова virtual, на самом деле таковой является. В противном случае три последние строки выглядели бы как

Код
T3::func()
T[color=red]2[/color]::func()
T[color=red]2[/color]::func()
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.