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

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

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

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16833 / 5254 / 323
Регистрация: 30.03.2009
Сообщений: 14,148
Записей в блоге: 26
14.01.2010, 15:31     РАБОТА С ВИРТУАЛЬНЫМИ ФУНКЦИЯМИ
Цитата Сообщение от zim22 Посмотреть сообщение
логично, что будет вызываться функция базового класса. ведь вызов функции идёт через указатель на базовый класс. а раз функция НЕ виртуальная - то она и вызывается (поиск по vtable не идёт).
Ты утверждал, что в проиводном классе нужно функцию описывать как виртуальную (типа, чтобы глазами лучше зацепить факт виртуальности). Я тебе показал конкретный пример, а так же объяснил, почему тебе это ВООБЩЕ ничего не даст

Цитата Сообщение от Genius Ignat Посмотреть сообщение
В абстрактных классах представляющих из себя интерфейсы, не нужны конструкторы, и деструкторы
В производных деструкторы, нужны не спорю
Если ты пишешь деструкторы в производных классоах (но асбтрактный оставляешь без деструктора), то удалять (delete) объекты производного класса можно только через указатель производного класса. А вот если ты в базовом классе опишешь деструктор, что ты сможешь удалять объект через указатель на базовый класс. В этом-то и есть весь прикол. Производный класс тебе нужен только в момент создания объекта, после чего ты указатель на производный класс преобразуешь в указатель на базовый класс и вообще напрочь забываешь про проивзодный класс. В этом и есть мощь механизма виртуальных функций (а так же ООП, о чём говорилось в одной из соседних тем).

Цитата Сообщение от Genius Ignat Посмотреть сообщение
Почитайте лучше:
http://it-books.narod.ru/COM/InsideCOM_rus.rar
И хватит спорить, в этой книге, написано и про определения типа во время выполнения,
и про полиморфизм.
По крайней мере, лучшего объяснения, и примеров я не видел, тем более в этой книге
есть нечто большее, чем просто виртуальные функции конструкторы и деструкторы, про
которые все так усердно спорят
Зачем отсылать людей к какой-то книге. Тебе конкретно в твоём примере показали недочёты, которые уже сами по себе говорят о том, что тебе не мешало бы почитать про ООП (не путать с "прочитать учебник по Си++")

Цитата Сообщение от zim22 Посмотреть сообщение
если базовый класс содержит вирт.функции, то у него должен быть виртуальный деструктор.
тело которого будет определено вне класса.
Необязательно. Правда в этом случае будет "программирование через классы", а не "ООП". Тело виртуального деструктора необязательно определать вне класса (т.е. на вскидку я не вижу ни одной причины, почему должно быть иначе)

Цитата Сообщение от zim22 Посмотреть сообщение
в производных - можно и без деструкторов обойтись. в таком случае будут вызываться деструкторы базового класса.
Если ты удаляешь объект производного класса (как сделано в примере), то деструктор базового класса тоже вызовется. Независимо от того,описан он в проивзодном классе, или нет. Но это тоже чисто ремарка, поскольку указанный пример уже не является примером ООП в силу указанных ошибок
 
Текущее время: 11:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru