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

Статические и виртуальные функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сумма по модулю 256 http://www.cyberforum.ru/cpp-beginners/thread1202335.html
Обьясните в алгоритме ГОСТ 28147-89 В РЕЖИМЕ ГАММИРОВАНИЯ 32-х разрядный суматор по модулю 2^32 как это и помогите с реализацией
C++ Substr и рекурсия Доброй ночи! void extract(string*, string&); int main() { string array; string test = "FOO bar,1444,63333,99222,100333"; int first = test.find(','); string data =... http://www.cyberforum.ru/cpp-beginners/thread1202334.html
C++ Нахождение наименьшего нечетного натурального делителя k (k≠1) любого заданного натурального числа n
Помогите с этой задачой: Подпрограммы Составить функцию для нахождения наименьшего нечетного натурального делителя k (k≠1) любого заданного натурального числа n. Хотя бы подскажите идею для...
Вывести элемент массива, который строго больше минимального C++
Привет всем. У меня такая задача. Ввести элементы массива с клавиатуры, отсортировать его по возрастанию и вывести после сортировки элемент массива, который строго больше минимального. Если такого...
C++ Hex коды символов из char* в стринг http://www.cyberforum.ru/cpp-beginners/thread1202270.html
Добрый день. Голову себе сломал, гуглил. Все без толку. Есть массив символов (char*). Мне нужно получить строку std::string отображающую коды символов этого массива в hex формате. Для наглядности вот...
C++ Шаблон класса Stack Задание1: Реализовать в отдельном модуле шаблон класса «стек». Задание2: Решить на базе шаблона класса стек следующие задачи, создав программу - клиент: 1. Создать объект типа стек,... подробнее

Показать сообщение отдельно
lev_
3 / 3 / 0
Регистрация: 26.05.2014
Сообщений: 176
Завершенные тесты: 1
08.06.2014, 22:01  [ТС]
пример преподавателя. вроде на билдере

Модуль Shape.h
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
class Figura                         // абстрактный класс - базовый
{
private:
AnsiString Name;
public:
 void SetName(AnsiString s);
 AnsiString GetName();
 virtual float area()=0;     // чисто виртуальный метод
 float VolOfPriz(float H);  
};
 
class Square: public Figura{
  private:
   float Side;
  public:
   Square();
   void SetSide(float s);
   float area ();               
};
 
class Disk: public Figura{
 private:
  float Radius;
 public:
  Disk();
  void SetRad(float r);
  float area();
};
Shape.cpp
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
void Figura::SetName(AnsiString s)
{
 Name=s;
}
 
 AnsiString Figura::GetName()
 {
  return Name;
 }
 
 float Figura::VolOfPriz(float H)
 {
  return H*area();                                 // через вызов статического метода происходит вызов виртуального 
 }
 
 Square::Square()
 {
  Side=0;
 }
 void  Square::SetSide(float s)
 {
  Side=s;
 }
 float Square::area ()
 {
  return Side*Side;
 }
Disk::Disk()
{
  Radius=0;
}
void  Disk::SetRad(float r)
 {
   Radius=r;
 }
float Disk::area()
{
  return Radius*Radius*3.1415;
}
Модуль Unit1.h - модуль тестирующей программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TEdit *Edit1;
        TEdit *Edit2;
        TMemo *Memo1;
        TButton *Button1;
        TEdit *Edit3;
        TEdit *Edit4;
        void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
Square* Sp= new Square;
Disk* Dp=new Disk;
Figura* F[2];
Unit1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Sp->SetName(Edit1->Text);
Sp->SetSide(StrToFloat(Edit2->Text));
Memo1->Lines->Add(Sp->GetName()+" "+FloatToStr(Sp->area()));  
Dp->SetName(Edit3->Text);
Dp->SetRad(StrToFloat(Edit4->Text));
Memo1->Lines->Add(Dp->GetName()+" "+FloatToStr(Dp->area()));    
F[0]=Sp;
F[1]=Dp;
for (int i=0 ; i<2; i++)
Memo1->Lines->Add(F[i]->GetName()+" призма  "+FloatToStr(F[i]->VolOfPriz(3.5))); // вызов метода area() происходит в зависимости от того  указатель на какой объект содержится в  F[i]
}
Добавлено через 1 минуту
Цитата Сообщение от Renji Посмотреть сообщение
Для родительского объекта создать статическую функцию выдачи результатов расчета виртуальной функции на экран монитора.
сам не понимаю) задание такое

Добавлено через 4 минуты
видимо опечатка: Для родительского класса создать статическую функцию выдачи результатов расчета виртуальной функции на экран монитора.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru