C++/C++11 C++/C++11
Всем привет. решил сделать класс в С++.
Но так как в классах разбераюсь плохо у меня возникли некоторые вопросы.
вопрос первый:
Нужно ли в базовом классе делать метод Draw() виртуальным.если во всех
наследуемых классах вызывается базовый.
вопрос второй:
Как лучше сделать потомков. вариант 1 или вариант 2
вопрос третий:
Добавить метод передвижения в базовый класс или реализовать в потомках
class Самолет
{
unsigned char CID;
protected:
float вес;
float скорость;
char модель[20];
// и прочий базовые характеристики
unsigned char *texture;
public:
Самолет(){ CID = 7; texture = 0; }
~Самолет(){ if( texture ) delete [] texture;}
void LoadTexture( const char *FileName );
virtual void Draw() = 0; // или не делать виртуальным
};
//---------------------------------------------------
// вариант 1
//---------------------------------------------------
class Истребитель : public Самолет
{
sIArsenal arsenal;
//тут добавить эксклюзивныe для класса данные
public:
void Draw();
};
class Бомбордировщик : public Самолет
{
sBArsenal arsenal;
//тут добавить эксклюзивныe для класса данные
public:
void Draw();
};
//---------------------------------------------------
// вариант 2
//---------------------------------------------------
class Военный_Самолёт: public Самолёт
{
sArsensl arsenal;
// и прочие военные характеристики
public:
void Draw();
};
class Транспортный_Самолёт: public Самолёт
{
// тут транспортые характеристики
public:
void Draw();
};
Но так как в классах разбераюсь плохо у меня возникли некоторые вопросы.
вопрос первый:
Нужно ли в базовом классе делать метод Draw() виртуальным.если во всех
наследуемых классах вызывается базовый.
вопрос второй:
Как лучше сделать потомков. вариант 1 или вариант 2
вопрос третий:
Добавить метод передвижения в базовый класс или реализовать в потомках
class Самолет
{
unsigned char CID;
protected:
float вес;
float скорость;
char модель[20];
// и прочий базовые характеристики
unsigned char *texture;
public:
Самолет(){ CID = 7; texture = 0; }
~Самолет(){ if( texture ) delete [] texture;}
void LoadTexture( const char *FileName );
virtual void Draw() = 0; // или не делать виртуальным
};
//---------------------------------------------------
// вариант 1
//---------------------------------------------------
class Истребитель : public Самолет
{
sIArsenal arsenal;
//тут добавить эксклюзивныe для класса данные
public:
void Draw();
};
class Бомбордировщик : public Самолет
{
sBArsenal arsenal;
//тут добавить эксклюзивныe для класса данные
public:
void Draw();
};
//---------------------------------------------------
// вариант 2
//---------------------------------------------------
class Военный_Самолёт: public Самолёт
{
sArsensl arsenal;
// и прочие военные характеристики
public:
void Draw();
};
class Транспортный_Самолёт: public Самолёт
{
// тут транспортые характеристики
public:
void Draw();
};
0 1 1
Комментарии (3)
Для добавления комментариев необходимо авторизоваться
Мир Теней
Народ Тьмы, мастерски владеющий магией или народ...