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

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

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

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

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

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

Чистая виртуальная функция функция не имеет оператора переопределения - C++
Пишу программу для записи заметок. Есть 2 класса: Page и Note. Note наследуется от Page. Page.h #pragma once ...

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

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

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

Виртуальная функция - 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...

4
Chelioss
181 / 181 / 4
Регистрация: 08.01.2011
Сообщений: 1,137
21.10.2011, 01:19 #2
Цитата Сообщение от Мартиника Посмотреть сообщение
как класса содержащего хоть одну виртуальную функцию.
как класса содержащего хоть одну чисто виртуальную функцию, т.е. виртуальную функцию без реализации.
На пальцах все объяснено в каждой книге по основам С++.
Литература С++
Выбираете любую книгу уровня Hello World оттуда по С++ и вперед.
0
Kastaneda
Jesus loves me
Эксперт С++
4728 / 2932 / 242
Регистрация: 12.12.2009
Сообщений: 7,442
Записей в блоге: 2
Завершенные тесты: 1
21.10.2011, 14:59 #3
Виртуальная функция - это функция, адрес которой будет вычислен на этапе работы программы (а не на этапе компиляции, как обычно). Это называется позднее связывание. Понадобиться оно может для полиморфного использования объектов.
Как то так, хотя конечно литературу почитать стоит.
0
silent_1991
Эксперт С++
4997 / 3055 / 149
Регистрация: 11.11.2009
Сообщений: 7,040
Завершенные тесты: 1
21.10.2011, 20:18 #4
Цитата Сообщение от Kastaneda Посмотреть сообщение
Виртуальная функция - это функция, адрес которой будет вычислен на этапе работы программы (а не на этапе компиляции, как обычно)
Не совсем корректное определение. Ведь адрес и так вычисляется на этапе работы программы, поскольку программа при запуске загружается в оперативную память, и значит функции каждый раз могут получать разные адреса.
0
Kastaneda
21.10.2011, 20:28     Виртуальная функция
  #5

Не по теме:

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

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2011, 20:28
Привет! Вот еще темы с ответами:

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

Чистая виртуальная функция - C++
Скажите, может ли чистая виртуальная функция иметь тело? В книге написано что может, но не написано как. Пытался сам определить по-разному...

Виртуальная функция, полиморфизм - C++
Добавить виртуальную функцию.Продемонстрировать полиморфизм. #include "stdafx.h" #include <iostream> #include <Windows.h> ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
21.10.2011, 20:28
Ответ Создать тему
Опции темы

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