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

Виртуальные функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как сделать автоматическое обновление http://www.cyberforum.ru/cpp-beginners/thread922611.html
Здравствуйте! Есть программа с функцией обновления через интернет. Проверка обновления и само обновление происходит по нажатию на кнопку. А как сделать проверку обновления при запуске программы? Код обновления взят из http://www.cyberforum.ru/cpp-builder/thread245432-page2.html
C++ Движение змейки Никак не получается сделать движение змейки с последующим присоединением элементов к ней при съедании яблока. Помогите пожалуйста!!! #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #include <time.h> #include <iostream> #include <string> http://www.cyberforum.ru/cpp-beginners/thread922593.html
C++ std::map и перегрузка оператора
решил освоить стандартные контейнеры и очередь за "map" нахожу на http://en.cppreference.com/w/cpp/container/map замороченный код, сокращаю его, чтоб читалось, работает. Но как? Здесь по-видимому перегрузка << на на что? и как она реализована? с помощью шаблона...это меня застопорило...какие то Compare, Allocator #include <iostream> #include <map> // A specialization for Key strings...
C++ Наследование статической переменной
есть класс с статистическим полем я от него "произвожу" два потомка. у всех этик классов будет одно общее поле(переменная) или же у каждого своё?
C++ перевести программу из паскаля в с++ (для среды Borland C++). Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну http://www.cyberforum.ru/cpp-beginners/thread922570.html
Помогите пожалуйста перевести программу из паскаля в с++(для среды Borland C++) Условие:дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию (при этом АN перейдет в АN-1, АN-1 - в АN-2, А1 - в АN) прога: const maxSize=100; type Tarr=array of integer; var
C++ перевести программу из паскаля в с++ (для среды Borland C++). Дана матрица размера MxN. Поменять местами столбец с номером N и первый из столбцов Помогите пожалуйста перевести программу из паскаля в с++(для среды Borland C++) Условие:дана матрица размера MxN. Поменять местами столбец с номером N и первый из столбцов, содержащих только отрицательные элементы. Если требуемых столбцов нет, то вывести матрицу без изменений. прога: const maxSize=10; type Tmatrix=array of integer; var подробнее

Показать сообщение отдельно
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
13.07.2013, 18:35     Виртуальные функции
Ключевое слово "virtual" говорит компилятору, что вместо раннего связывания нужно использовать позднее. Что такое связывание, можете погуглить. Вкратце это сопоставление вызова функции с телом. Сначала создается таблица виртуальных функций (некий массив указателей), далее в порядке, объявленном в базовом классе, в таблицу заносятся адреса соответствующих функций (виртуальных, для каждого класса переопределенных, либо базового). Далее скрытый член класса (указатель) VPTR инициализируется начальным адресом этой таблицы. Он также создается в классах, где есть хотя бы одна виртуальная функция. Инициализация происходит соответственно в конструкторе. Ну и далее во время работы программы компилятор, зная порядок объявления адресов в таблице, вызывает функцию просто смещаясь к соответствующей ячейке. Разные компиляторы могут реализовывать "виртуальность" по-своему.
 
Текущее время: 10:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru