Форум программистов, компьютерный форум 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 = test.substr(first + 1); http://www.cyberforum.ru/cpp-beginners/thread1202334.html
C++ Нахождение наименьшего нечетного натурального делителя k (k≠1) любого заданного натурального числа n
Помогите с этой задачой: Подпрограммы Составить функцию для нахождения наименьшего нечетного натурального делителя k (k≠1) любого заданного натурального числа n. Хотя бы подскажите идею для решения.
Вывести элемент массива, который строго больше минимального C++
Привет всем. У меня такая задача. Ввести элементы массива с клавиатуры, отсортировать его по возрастанию и вывести после сортировки элемент массива, который строго больше минимального. Если такого элемента нет, вывести "NO", то есть, если массив 1 1 1 1 1. А если отсортированный массив - 1 1 3 5 6, то должно вывести 3. Первые 2 части задачи я сделал #include <stdio.h> #include <conio.h> int...
C++ Hex коды символов из char* в стринг http://www.cyberforum.ru/cpp-beginners/thread1202270.html
Добрый день. Голову себе сломал, гуглил. Все без толку. Есть массив символов (char*). Мне нужно получить строку std::string отображающую коды символов этого массива в hex формате. Для наглядности вот код как примерно делаю char chr = {0x63,0x78,0x1d}; std::string str; std::stringstream is; is<<std::hex; for(int i=0;i<3;i++) is<<(int)(chr); is >> str;
C++ Шаблон класса Stack Задание1: Реализовать в отдельном модуле шаблон класса «стек». Задание2: Решить на базе шаблона класса стек следующие задачи, создав программу - клиент: 1. Создать объект типа стек, параметризировав его типом AnsiString 2. Создать 2 объекта типа стек, параметризировав их типом float и вычислить сумму двух стеков. 3. Создать объект типа стек, параметризировав его типом Person Пример... подробнее

Показать сообщение отдельно
lev_
2 / 2 / 0
Регистрация: 26.05.2014
Сообщений: 119
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 минуты
видимо опечатка: Для родительского класса создать статическую функцию выдачи результатов расчета виртуальной функции на экран монитора.
 
Текущее время: 02:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru