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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Мартиника
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 43
#1

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

21.10.2011, 01:12. Просмотров 509. Ответов 4
Метки нет (Все метки)

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

виртуальная функция - C++
Вот на форуме увидел тему где приводились в пример виртуальные функции..Что это такое?И чем они различаются от обычных функций?

Виртуальная функция - C++
Создайте класс Matematica, определите в нем виртуальную функцию-член matem(int x, int y), которая выводит на экран значения параметров....

Виртуальная функция - C++
Всем доброго времени суток! Прошу помочь с одной проблемой. Собственно, вот программа: #include <iostream> #include <conio.h> ...

Виртуальная функция - C++
Создать производный класс Trapez(равнобокая трапеция). Определить в классе наследнике: -перегруженные функции для изменения сторон ...

Виртуальная функция - C++
Ругается на метод virtual bool isOveersize() из класса publication. Что не так ? #include "stdafx.h" #include <string> #include...

виртуальная функция - C++
class B { private: int a; int b; public: virtual void show();//есть виртуальная функция,которая выводит a и b } class...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,133
21.10.2011, 01:19     Виртуальная функция #2
Цитата Сообщение от Мартиника Посмотреть сообщение
как класса содержащего хоть одну виртуальную функцию.
как класса содержащего хоть одну чисто виртуальную функцию, т.е. виртуальную функцию без реализации.
На пальцах все объяснено в каждой книге по основам С++.
Литература С++
Выбираете любую книгу уровня Hello World оттуда по С++ и вперед.
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
21.10.2011, 14:59     Виртуальная функция #3
Виртуальная функция - это функция, адрес которой будет вычислен на этапе работы программы (а не на этапе компиляции, как обычно). Это называется позднее связывание. Понадобиться оно может для полиморфного использования объектов.
Как то так, хотя конечно литературу почитать стоит.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 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     Виртуальная функция
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru