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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2012, 18:46   #1
OTAMAH
 
Регистрация: 07.03.2012
Сообщений: 4
По умолчанию Указатель на базовый клас

Возник один вопросик: Если я работаю с класами через указатель на базовый клас мне нужно все фунцыи записывать как виртуальные?
OTAMAH вне форума Ответить с цитированием
Старый 21.04.2012, 18:56   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

зачем?

виртуальные функции это те которые меняют реализацию в потомках.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.04.2012, 20:04   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

а вот деструктор очень желательно...
p51x вне форума Ответить с цитированием
Старый 21.04.2012, 21:02   #4
OTAMAH
 
Регистрация: 07.03.2012
Сообщений: 4
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
а вот деструктор очень желательно...
вот мой код)
Я не прошу написать
PHP код:
//---------------------------------------------------------------------------
#ifndef hider_lab6H
#define hider_lab6H
#include <vcl.h>
class Massive
{
protected:
int kilkist;
public:
Massive(){kilkist=0;};
Massive(int a){kilkist=a;};
virtual ~Massive(){kilkist=0;};
virtual void sort()=0;
virtual int max(){};
virtual void thyslo()=0;
virtual void input (TEdit *)=0;
virtual void output (TEdit *)=0;
};

class 
dvo:public Massive
{
int vysota;
int **mas;
public:
        
dvo(int aint b):Massive(a)
        {
        
kilkist=b;
        
mas=new int *[kilkist];
        for (
int i=0i<vysotai++)
                {
                        
mas[i]=new int[b];
                }
        }
        ~
dvo(){delete []mas;}
        
void sort();
        
int max();
        
int min();
        
void output(TEdit *);
        
void input(TEdit *);
        
void thyslo(TEdit *);
};
class 
odno:public Massive
{
private:
int *mas;
public:
odno(){};
odno(int a):Massive(a){mas=new int[kilkist];};
~
odno(){delete []mas;}
void sort();
void input(TEdit *);
void output(TEdit *);
void thyslo(){};
void ShowMeasag(){ShowMessage(kilkist);};
int max();
int min();
friend int dvo::max();
friend int dvo::min();
};

//---------------------------------------------------------------------------
#endif 
OTAMAH вне форума Ответить с цитированием
Старый 21.04.2012, 21:02   #5
OTAMAH
 
Регистрация: 07.03.2012
Сообщений: 4
По умолчанию

PHP код:
[PHP]//---------------------------------------------------------------------------
#pragma hdrstop
#include "hider_lab6.h"
#include <windows.h>
void odno::sort()
{
for (
int i=0i<kilkisti++)
        {
                if(
mas[i]>mas[i+1])
                {
                        
int b=0;
                        
b=mas[i];
                        
mas[i]=mas[i+1];
                        
mas[i+1]=b;
                }
        }
}
//---------------------------------------------------------------------------
void dvo::sort()
{
for (
int i=kilkisti>0i--)
        {
                for(
int j=0j<kilkist-1j++)
                if(
mas[i][j]>mas[i][j+1])
                {
                        
int temp=0;
                        
temp=mas[i][j];
                        
mas[i][j]=mas[i][j+1];
                        
mas[i][j+1]=temp;
                }
        }
}
//---------------------------------------------------------------------------
int odno::max()
{
sort();
int max;
for(
int i=kilkisti>0i--)
        {
        
max*=10;
        
max+=mas[i];
        }
return 
max;
}
//---------------------------------------------------------------------------
int odno::min()
{
sort();
int min;
for(
int i=kilkisti>0i--)
        {
        
min*=10;
        
min+=mas[kilkist-i];
        }
return 
min;
}
//---------------------------------------------------------------------------

int dvo::max()
{
sort();
odno masmax(kilkist*vysota);
int d=0;
for(
int i=0i<kilkisti++)
for(
int j=0i<vysotai++)
{
masmax.mas[d]=mas[i][j];d++;}
masmax.sort();
int max_2;
for (
int i=masmax.kilkisti>0i--)
        {
        
max_2*=10;
        
max_2+=masmax.mas[i];
        }
return 
max_2;
}
//---------------------------------------------------------------------------
int dvo::min()
{
sort();
odno masmax(kilkist*vysota);
int d=0;
for(
int i=0i<kilkisti++)
for(
int j=0i<vysotai++)
{
masmax.mas[masmax.kilkist-d]=mas[i][j];
d++;
}
masmax.sort();
int min_2;
for (
int i=masmax.kilkisti>0i--)
        {
        
min_2*=10;
        
min_2+=masmax.mas[masmax.kilkist-i];
        }
return 
min_2;
}
//---------------------------------------------------------------------------
void dvo::output(TEdit *m)
{
for(
int i=0i<vysotai++)
{
for(
int j=0j<kilkistj++)
m->Text+=mas[i][j];
}
};
//---------------------------------------------------------------------------
void odno::input(TEdit *m)
{
int a;
a=m->Text.ToInt();
while(
a%10!=0)
{
        
mas[kilkist]=a%10;
        
a/=10;
        
kilkist++;
}
}
//---------------------------------------------------------------------------
void dvo::input(TEdit *m)
{
vysota=3;
kilkist=3;
int a;
a=m->Text.ToInt();
while(
a%10!=0)
{
        for(
int i=0i<kilkisti++)
        for (
int j=j<vysotaj++)
        
mas[i][j]=a%10;
        
a/=10;
}
}
//---------------------------------------------------------------------------
void odno::output(TEdit *m)
{
        
int a=0;
        for(
int i=kilkist-1i>=0i--)
        {
        
a*=10;
        
a+=mas[i];
        }
        
m->Text=a;
}
//---------------------------------------------------------------------------
void dvo::thyslo(TEdit *p)
{
        
int r=0;
        
int masive[1000];
        for (
int i=0i<kilkisti++)
        {
        for(
int j=0j<vysotaj++)
        
masive[r]+=mas[i][j];
        
r++;
        }
        for(
int i=0i<kilkisti++)
        if(
masive[i]<masive[i+1])
        {
        
int temp;
        
temp=masive[i];
        
masive[i]=masive[i+1];
        
masive[i+1]=temp;
        }
        
output(p);
}
//---------------------------------------------------------------------------
#pragma package(smart_init) 
[/PHP]
OTAMAH вне форума Ответить с цитированием
Старый 22.04.2012, 08:08   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Я не прошу написать
А кто про это что-то говорил?
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
клас динамических векторов,перегрузка tiger Помощь студентам 2 13.12.2011 01:11
Простой клас STUDENT aless23 C++ Builder 1 20.06.2011 17:46
Простенький клас Chartvit Общие вопросы C/C++ 2 07.01.2010 20:43
Вернут указатель на базовый класс Crucian Общие вопросы C/C++ 2 08.11.2007 18:10