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

Виртуальный методы, абстрактный класс. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Variable or field 'set_color' declared void http://www.cyberforum.ru/cpp-beginners/thread453438.html
написал прог из книги вчём проблема ? #include <iostream> #include <msoftcon.h> #include <math.h> void draw_circle(int ,int ,int ); void set_color(color foreground, color background); void...
C++ не верно решает Дан массив A размера N и целые числа K и L (1 ≤ K < L ≤ N). Переста- вить в обратном порядке элементы массива, расположенные между эле- ментами AK и AL, не включая эти элементы. ... http://www.cyberforum.ru/cpp-beginners/thread453436.html
Найти номера двух ближайших элементов из этого массива, т. е. элементов с наименьшим модулем разности C++
Дан массив размера N. Найти номера двух ближайших элементов из этого массива (т. е. элементов с наименьшим модулем разности) и вывести эти номера в порядке возрастания.
Преобразование списка. C++
Есть класс, реализующий линейный двухсвязный список. #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; class Element{ public: int Info; Element *Next, *Prev;...
C++ Вывести на экран фамилии и имена трех худших по среднему баллу учеников http://www.cyberforum.ru/cpp-beginners/thread453411.html
задача На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается количество учеников N, которое не меньше 10, но не превосходит...
C++ Изменение регистра строки Принимаем строку с клавиатуры. С пом. функции getline(). string clientName; getline(cin,clientName); Необходимо перевести всю строку в нижний регистр, независимо от того какие символы ввел... подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.02.2012, 23:55
Цитата Сообщение от _engineer_ Посмотреть сообщение
Класс который описывает только прототипы функций без их реализации
Не обязательно. Чтобы быть абстрактным, класс должен содержать чистую виртуальную функцию. Из такого определения вытекает, что класс может содержать 100 обычных функцию с реализациями (даже не виртуальных) и одну чистую виртуальную, и тогда он будет абстрактным.

Цитата Сообщение от _engineer_ Посмотреть сообщение
(в терминологии С++ интерфейс)
В терминологии С++ как раз-таки нет понятия "интерфейсы". Так что это замена интерфейсам. С другой стороны, в таких языках, как Java и C# есть как интерфейсы, так и абстрактные классы.

Цитата Сообщение от _engineer_ Посмотреть сообщение
соответственно раз нет реализации не одного метода(функции), то нельзя создать экземпляр этого класса.
И снова - достаточно, чтобы не было реализации хотя бы одного метода (он должен быть объявлен как чисто виртуальный - virtual type method(parameters) = 0;), то нельзя создать объект такого класса, потому что он становится абстрактным. Независимо от реализаций и виртуальности остальных его методов.

Цитата Сообщение от _engineer_ Посмотреть сообщение
Это такая функция которая переписана для каждого наследника класса
Не обязательно. Класс-наследник может безболезненно использовать реализацию класса-родителя.
Виртуальный метод - это метод, конкретная реализация которого определяется во время исполнения программы на основании типа объекта, из которого был вызван метод.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru