Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 17:28   #1
alex_triton
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 32
Восклицание Полиморфизм, наследование и деструкторы

Доброго времени суток, мне нужну усовершенствовать существующую курсовую, встроив туда выше приведенные темы. Чтобы сильно не заморачиваться я решил сделать рамку и наследованием построить в ней меню + ко всему этому сделать конструктор и деструктор
Код:
#include <iostream>
using namespace std;

class Ram
{
    public:
    int x1; int x2; int x3; int x4;

    void post(int,int,int,int);
};

class Menu:public Ram
{
   public:
   int y1;

   void post(int,int,int,int); //{y1=x1+1;};
};

void Menu::post(int y1, int y2, int y3, int y4)
{
    y1++;
    for (int i=0;i<y1;i++)
    {
        cout<<"\n";
    }
}

void Ram::post(int x1, int x2, int x3, int x4)
{
    for (int i=0;i<x1;i++)
    {
        cout<<"\n";
    }
    for (int i=0;i<x2;i++)
    {
        cout<<"-";
    }
    for (int j=0;j<x3;j++)
    {
        cout<<"\n";
        cout<<"|";
        for (int i=0;i<x4;i++)
        {
            cout<<" ";
        }
        cout<<"|";
    }
    cout<<"\n";
    for (int i=0;i<x4;i++)
    {
        cout<<"-";
    }
    cout<<"\n";
}

int main()
{
    Ram a;
    Menu b;
    a.post(2,35,20,33);
    b.post(2,35,20,33);
    system("pause");
}
Прошу помощи...

Последний раз редактировалось Sazary; 08.11.2009 в 19:51.
alex_triton вне форума Ответить с цитированием
Старый 08.11.2009, 17:52   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Чтобы был полиморфизм, в классе Ram достаточно дописать virtual:
Код:
virtual void post(int,int,int,int);
Конструкторы можно такие сделать:
Код:
Ram::Ram()
  :x1(0), x4(0), x3(0), x4(0)
{}

Ram::Ram(int _x1, int _x2, int _x3, int _x4)
  :x1(_x1), x4(_x4), x3(_x3), x4(_x4)
{}
В деструктор писать просто нечего, но в классе Ram он должен быть virtual как и метод post.
Тогда можно будет писать:
Код:
Ram *a = new Menu();
a->post(2,35,20,33);
delete a;
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Полиморфизм и выделение (освобождение) памяти Scogan Общие вопросы C/C++ 9 13.04.2009 07:57
Полиморфизм и виртуальные методы Викдон Общие вопросы Delphi 1 02.02.2009 04:40
Полиморфизм. Пример. Scratch Общие вопросы C/C++ 53 28.09.2008 18:46