Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 03.07.2010
Сообщений: 10

иллюстрация полиморфизма

30.12.2012, 01:20. Показов 1177. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!написал примитив для иллюстрации полиморфизма,ориентировался по видеокурсам с ТыТрубы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include<iostream.h>
#include<conio.h>
class Shape
{
 public :
   virtual float calc_area()=0;
};
 
class Rectangle : public Shape
{
 private:
  int width;
  int height;
 public :
  Rectangle(int w, int h) {width= w; height=h;}
  float calc_area() {return(width*height);}
};
 
class Circle : public Shape
{
 private:
  int radius;
 public:
  Circle(int r) {radius=r;}
  float calc_area() {return(3.14159*radius*radius);}
};
 
class Triangle : public Shape
{
 private:
  int width;
  int height;
 public:
  Triangle(int w, int h) {width= w;height= h;}
  float calc_area() {return(width*height/2);}
};
 
int main()
{
clrscr();
Rectangle r(5,12.5);
Triangle t(3,12);
Circle   c(5);
 
cout<<"Rectangle area:"<<r.calc_area()<<endl;
cout<<"Triangle area:"<<t.calc_area()<<endl;
cout<<"Circle area:"<<c.calc_area()<<endl;
/*
Shape* sr=&r;
Shape* st=&t;
Shape* sc=&c;
 
cout << "Rectangle area: " << sr -> calc_area()<<endl;
cout << "Triangle area: " << st -> calc_area() << endl;
cout << "Circle area: " << sc -> calc_area() << endl;
*/
return 0;
}
есть пара вопросов относительно терминологии
cout<<"Circle area:"<<c.calc_area()<<endl;-как правильно назвать выделенную часть?
cout << "Circle area: " << sc -> calc_area() << endl;- что в этой строчке значит sc->calc_area()?я понял это как вызов метода
Shape* sc=&c- как описать в правильных терминах эту строчку?
спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.12.2012, 01:20
Ответы с готовыми решениями:

Иллюстрация быстрой сортировки
Ребят,необходимо написать программу похожую на ту,которая тут https://www.cyberforum.ru/csharp-beginners/thread874724.html Помогите...

Иллюстрация побитовых операций над целочисленными данными
Ребята!!!!Помогите Пожалуйста! вот задание: Иллюстрация побитовых операций над целочисленными данными. поясните Как что куда ,Как...

Виды полиморфизма C++
Разбираю полиморфизм. Наткнулся на классификацию с тремя видами:1.специальный, 2.параметрический и 3.подтипов(включения). Все ли...

3
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
30.12.2012, 02:00
Цитата Сообщение от Fau$t Посмотреть сообщение
cout<<"Circle area:"<<c.calc_area()<<endl;-как правильно назвать выделенную часть?
Виртуальный метод

Цитата Сообщение от Fau$t Посмотреть сообщение
что в этой строчке значит sc->calc_area()
Вызов метода
1
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
30.12.2012, 02:04
C++
1
2
3
c.calc_area() //Используя селектор класса, вызываешь функцию
 
sc -> calc_area() //Используя селектор класса, вызываешь функцию
селектор "точка" используется для стековых объектов, а селектор "стрелка" для указателей на объекты.

C++
1
Shape* sc=&c //Объявляешь указатель на объект типа Share и присваиваешь ему адрес объекта c.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
01.01.2013, 03:06
Shape* sc=&c- как описать в правильных терминах эту строчку?
Проводится 2 операции: объявление указателя на базовый класс и инициализация этого указателя адресом производного класса. Позволяет передавать указатели в функции, где вызываются методы базового класса или, например, обрабатывать массивы таких указателей циклически с той же целью. Каждый раз при вызове виртуального метода базового класса, для каждого производного будет вызван его переопределённый (в Вашем случае определённый, так как в базовом классе представлен, чисто, виртуальный метод и переопределять нечего) метод. Это и есть реализация принципа - "один интерфейс - много методов" т.е. полиморфизм.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.01.2013, 03:06
Помогаю со студенческими работами здесь

Реализация полиморфизма
Читал что существует примерно 10 способов реализации полиморфного контейнера. Видел только один где создается виртуальный класс и у него...

Использование полиморфизма
Помогите написать программу, которая использует перегрузительную функцию для работы с данными типов long и double и определяет...

Принципы наследования и полиморфизма
Даны натуральное число n, действительные числа a1 a2,...,an. Если последовательность a1 ,a2 ,...,an упорядочена по неубыванию, то...

Неочевидные грабли полиморфизма с++
Наткнулся в интернете на любопытный код. Спешу поделиться с сообществом. Просто, что бы кто если не в курсе - узнал, и не попал на эти...

Смысл использования полиморфизма
#include &lt;iostream&gt; using namespace std; class A{ public: virtual void speak() {} };


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru