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

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

Войти
Регистрация
Восстановить пароль
 
Fau$t
0 / 0 / 0
Регистрация: 03.07.2010
Сообщений: 10
#1

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

30.12.2012, 01:20. Просмотров 607. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2012, 01:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос иллюстрация полиморфизма (C++):

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

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

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

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

В чем смысл полиморфизма - C++
Объясните, пожалуйста, смысл полиморфизма. Не могу никак вникнуть. Где и как он используется? И примерчик, пожалуйста

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

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

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

C++
1
Shape* sc=&c //Объявляешь указатель на объект типа Share и присваиваешь ему адрес объекта c.
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3139 / 307
Регистрация: 04.12.2011
Сообщений: 8,661
Записей в блоге: 5
01.01.2013, 03:06 #4
Shape* sc=&c- как описать в правильных терминах эту строчку?
Проводится 2 операции: объявление указателя на базовый класс и инициализация этого указателя адресом производного класса. Позволяет передавать указатели в функции, где вызываются методы базового класса или, например, обрабатывать массивы таких указателей циклически с той же целью. Каждый раз при вызове виртуального метода базового класса, для каждого производного будет вызван его переопределённый (в Вашем случае определённый, так как в базовом классе представлен, чисто, виртуальный метод и переопределять нечего) метод. Это и есть реализация принципа - "один интерфейс - много методов" т.е. полиморфизм.
1
01.01.2013, 03:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2013, 03:06
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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