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

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

Восстановить пароль Регистрация
 
Мартиника
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 43
21.10.2011, 01:12     Виртуальная функция #1
В учебнике дается понятие абстрактного класса, как класса содержащего хоть одну виртуальную функцию.
Проблема в том, что я так и не смогла для себя четко понять, что же такое. виртуальная функция. Облазила кучу сайтов, но там все как-то зыбко и непонятно.
Объяните, пожалуйста на пальцах, что же это такое.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2011, 01:12     Виртуальная функция
Посмотрите здесь:

виртуальная функция C++
C++ виртуальная функция
C++ Виртуальная функция
Чистая виртуальная функция C++
C++ Виртуальная функция и возвращаемое значение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
21.10.2011, 01:19     Виртуальная функция #2
Цитата Сообщение от Мартиника Посмотреть сообщение
как класса содержащего хоть одну виртуальную функцию.
как класса содержащего хоть одну чисто виртуальную функцию, т.е. виртуальную функцию без реализации.
На пальцах все объяснено в каждой книге по основам С++.
Литература С++
Выбираете любую книгу уровня Hello World оттуда по С++ и вперед.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
21.10.2011, 14:59     Виртуальная функция #3
Виртуальная функция - это функция, адрес которой будет вычислен на этапе работы программы (а не на этапе компиляции, как обычно). Это называется позднее связывание. Понадобиться оно может для полиморфного использования объектов.
Как то так, хотя конечно литературу почитать стоит.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.10.2011, 20:18     Виртуальная функция #4
Цитата Сообщение от Kastaneda Посмотреть сообщение
Виртуальная функция - это функция, адрес которой будет вычислен на этапе работы программы (а не на этапе компиляции, как обычно)
Не совсем корректное определение. Ведь адрес и так вычисляется на этапе работы программы, поскольку программа при запуске загружается в оперативную память, и значит функции каждый раз могут получать разные адреса.
Kastaneda
21.10.2011, 20:28     Виртуальная функция
  #5

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
и значит функции каждый раз могут получать разные адреса.
Разными будут абсолютные адреса, виртуальные адреса(смещения) будут "вшиты" в код, т.е. на месте вызова ф-ции будет примерно такой ассебмлерный код:
Assembler
1
call 0E81127h ;адерес взят наугад
в этом как раз заключается работа линкера.

Yandex
Объявления
21.10.2011, 20:28     Виртуальная функция
Ответ Создать тему
Опции темы

Текущее время: 15:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru