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

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

Войти
Регистрация
Восстановить пароль
 
lev_
3 / 3 / 0
Регистрация: 26.05.2014
Сообщений: 169
Завершенные тесты: 1
#1

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

08.06.2014, 03:34. Просмотров 467. Ответов 4
Метки нет (Все метки)

Составить программу с одним родительским классом и двумя потомками. Все поля должны быть закрытыми. Потомки должны содержать виртуальные функции. Для родительского объекта создать статическую функцию выдачи результатов расчета виртуальной функции на экран монитора. Составить тестирующую программу. В ней нужно реализовать вывод параметров объектов на экран монитора.

Родительский класс: Животное (поле - кличка).
Потомки: Кошка (поле рост –h )
Собака (поле рост- h)
Полиморфные методы: Вес животного
(Кошка 15*h*h*h)
(Собака 10*h*h*h)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 03:34     Статические и виртуальные функции
Посмотрите здесь:

Статические функции - C++
Начинаю изучать С++, написал код, но не хочет работать, подскажите, в чем может быть ошибка. class Sequence { public: Sequence(int...

Статические функции - C++
Добрый день. Пример из Лафорте, ООП: // statfunc.cpp // Статические функции и ID объектов #include <iostream> using...

статические функции - C++
Всем здрасьте. У меня тут впоросик на счёт static функций. я знаю как работает static с переменной. Но как он работает с функциями? к...

Статические члены и функции - C++
Что-то я не могу понять что я забыли и чяднт что код не компилируется. #include <iostream> #include <string> using namespace std; ...

Статические переменные и функции - C++
С какой целью применяются статические фуекции и переменные? Что они дают?

Виртуальные функции - C++
Если в базовом классе А есть виртуальная функция show() перегруженная, то есть имеется три разные версии этой функции. Есть класс Б...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1877 / 1275 / 290
Регистрация: 05.06.2014
Сообщений: 3,640
08.06.2014, 15:31     Статические и виртуальные функции #2
Для родительского объекта создать статическую функцию выдачи результатов расчета виртуальной функции на экран монитора.
Перечитать чем класс отличается от объекта класса.
Перечитать чем static функция отличается от прочих.
Задуматься каким мистическим образом статическая функция получит результаты виртуальной.
Объяснить почему поставленные условия являются бредом сивой кобылы.
lev_
3 / 3 / 0
Регистрация: 26.05.2014
Сообщений: 169
Завершенные тесты: 1
08.06.2014, 22:01  [ТС]     Статические и виртуальные функции #3
пример преподавателя. вроде на билдере

Модуль 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 минуты
видимо опечатка: Для родительского класса создать статическую функцию выдачи результатов расчета виртуальной функции на экран монитора.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,931
Завершенные тесты: 1
08.06.2014, 22:03     Статические и виртуальные функции #4
Ваш преподаватель называет статическими обычные функции-члены. Что многое говорит об его ужасающей некомпетентности.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2014, 22:14     Статические и виртуальные функции
Еще ссылки по теме:

Виртуальные функции - C++
Здравствуйте,уважаемые посетители форума.Пишу программу созданию фигур и их перемещению на экране использую виртуальные функции.И...

Виртуальные функции - C++
Доброго времени суток. Есть задание. Создать абстрактный класс Function (функция) с виртуальными методами вычисления значения функции...

Виртуальные функции - C++
Разработать программу с использованием наследования классов, реализующую классы: Земноводное(ареал обитания)-&gt;Крокодил(род, длина, вес) ...

виртуальные функции - C++
ввести виртуальную функцию class A { void init(); } classB:A { void init(); }

Виртуальные функции - C++
Пожалуйста, подскажите как быть: class Circles; class Rectangs; class Snake { public: Circles *drr; void start1(); ...

Виртуальные функции - C++
Составить программу в С Buildere. Объявить базовый класс с именем person {имя, возраст, группа}. Определить функцию show (), которая...


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

Или воспользуйтесь поиском по форуму:
Renji
1877 / 1275 / 290
Регистрация: 05.06.2014
Сообщений: 3,640
08.06.2014, 22:14     Статические и виртуальные функции #5
видимо опечатка: Для родительского класса создать статическую функцию выдачи результатов расчета виртуальной функции на экран монитора.
Да без разницы. Статический метод НЕ применим к конкретному объекту класса. У него НЕТ this. Это самая обычная функция, просто расположенная в пространстве имен класса. Поэтому из статической функции принципиально невозможно вызвать виртуальную. А условия задачи под любым соусом являются бредом сивой кобылы.
Yandex
Объявления
08.06.2014, 22:14     Статические и виртуальные функции
Ответ Создать тему
Опции темы

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