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

Полиморфизм - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при вызове команды open http://www.cyberforum.ru/cpp-beginners/thread941967.html
Установил на семерку Visual C++ 6.0 Standard Edition. При открытии файлов появляется вот такая вот ошибка. С вылетает. ------------------------------------------------ Имя события проблемы: APPCRASH Имя приложения: MSDEV.EXE Версия приложения: 6.0.8168.0 Отметка времени приложения: 35889584 Имя модуля с ошибкой: devshl.dll Версия модуля с ошибкой: 6.0.8168.0 Отметка времени...
C++ спецификаторы %e и %l Доброго времени суток! Столкнулся с кодом, который читает из строки s числа формата x.xxxxe+xx, то есть в качестве примера s=0.23002032e+02. Чтение идет в массив buf. Творю все это с помощью команды sscanf, пример: char* buf=new char ; sscanf(s,"%le" ,buf); Отладчиком до этой функции по коду проекта добраться не выходит, поэтому для просмотра значения переменной юзаю printf: printf("Значение... http://www.cyberforum.ru/cpp-beginners/thread941951.html
C++ Заполнение динамического масива
Как заполнить динамический масив определенным числом без использования цыклов, жалательно при определении. Похоже на //int a = {0}; Масив не определенного размера scanf ("%d", &n); int *arry = new int ;
C++ Палиндромы. Плох ли мой код?
Захотел решить задание, проверить есть ли число палиндромом или нет. Начал как всегда писать код(чисто свой вариант),а уже после этого,я сверялся с другими прогами(таких кодов оказалось полно).И заметил,что мой код совсем не похож на другие(и это не первый случай,меня это частенько мучает:(,не знаю,может это то,что называют иногда *собственный стиль*) Прошу знающих,взглянуть на мой код,плох ли...
C++ Компилятор MinGWStudio 2.05 http://www.cyberforum.ru/cpp-beginners/thread941927.html
Подскажите пожалуйста, есть ли возможность в копиляторе MinGWStudio при использовании отладчика (Debug), попадать в тело функции?? Т.е. #include<iostream> using namespace std; void fn() { //какой-то код } int main() { fn();
C++ Подскажите в чем ошибка в моей программе (рекурсия) Программа копирует строку t в конец строки s: вот код: #include<iostream> using namespace std; int i=0; string fn_strcat(string s,string t) { char *p=&t;//создаем указатель "р", изначально на нулевой элемент строки t while(*p!='\0')// пока не дойдем до конца строки { s=s+*p++;//сначало к строке s прибавляем p и потом увеличиваем р подробнее

Показать сообщение отдельно
mrKi
2 / 2 / 0
Регистрация: 01.08.2013
Сообщений: 60
22.08.2013, 19:57     Полиморфизм
Всем доброго времени суток.Сразу к делу. Если описывать с помощью полиморфизма подклассы и потом динамично их создавать ,то можно вызывать замещенные(перегруженные) виртуальные функции описанные в базовом классе. А если мне нужно вызвать функцию которая описана только в подклассе? Если написал бред,- пожалуйста гляньте код. Обратите внимание на 63 строчку. Именно в ней загвоздка
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
59
60
61
62
63
64
65
66
67
#include <iostream>
using namespace std;
 
 
class human
{
      protected:
             int force;
             int age;
      
      public:
//           virtual void work()=0;
             human(){force=100;age=18;}
             human(int f,int a){force=f;age=a;}
             human(int f){force=f;age=18;}
             virtual void eat(){force+=20;cout<<"Я кушаю.\n";}
             virtual void sleep(){force+=10;cout<<"Я сплю.\n";}
};
 
 
class builder:public human
{
             virtual void eat(){force+=20;cout<<"Строитель кушает.\n";}
             virtual void sleep(){force+=10;cout<<"Строитель спит.\n";}
      void work(){force-=20;cout<<"Я строю.\n";}
};
class doctor:public human
{
             virtual void eat(){force+=20;cout<<"Доктор кушает.\n";}
             virtual void sleep(){force+=10;cout<<"Доктор спит.\n";}
          void work(){force-=20;cout<<"Я лечу.\n";}
};      
 
class def:public human
{
             virtual void eat(){force+=20;cout<<"Гибрид кушает.\n";}
             virtual void sleep(){force+=10;cout<<"Гибрид спит.\n";}
          void work(){force-=20;cout<<"Я строю.\n";work1();}
          void work1(){force-=20;cout<<"И к тому же лечу.\n";}
};
 
int main()
{
    int i,k;
    human *array[2];
    for (i=0;i<2;i++)
    {
        cout<<"Пожалуйста,выберите свою профессию(1:строитель,2:доктор) ";
        cin>>k;
        switch(k)
        {
                 case 1:array[i]=new builder;
                                     break;
                 case 2:array[i]=new doctor;
                                     break;
                 default :array[i]=new def;
                 break;
        };
    };
    cout<<"\nПоработаем? \n\n";
    for (i=0;i<2;i++)
    array[i]->eat();
//  array[i]->work();            Ошибка! 
    delete [] array;
    system("pause");
    return 0;
}
P.S. Если сформулировал вопрос не верно ,то будьте добры переформулируйте для меня. В суть полиморфизма вроде въехал ,а вот как грамотно использовать термин - нет)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru