Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> операторы C++, операторы C++ 
:(
    Опции темы
play
  Дата 2.10.2002, 00:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











#include <iostream>
class CA // базовый класс
{
public:
virtual int GetID() {return 0;};
virtual int GetInt() {return 0;};
virtual double GetFloat() {return 0;};
[email protected]};

class CB : public CA // для хранения целого типа
{
private:
  int value;
public:
  CB(int _value):value(_value) {};
  virtual int GetID() {return 1;};
  virtual int GetInt() {return value;};
  virtual double GetFloat() {return 0;};
};

class CD : public CA // для хранения вещественного типа
{
private:
  double value;
public:
  CD(double _value):value(_value) {};
  virtual int GetID() {return 2;};
  virtual int GetInt() {return 0;};
  virtual double GetFloat() {return value;};
};

int main(int argc, char* argv[])
{
// 1
  CA *b = new CB(5), *d = new CD(10.05);
  std::cout << b->GetInt() << " + " << d->GetFloat()
     << " = " << b->GetInt() + d->GetFloat() << std::endl;
  delete b; delete d;
  // 2
  b = new CD(4.95); d = new CD(10.05);
  std::cout << b->GetFloat() << " + " << d->GetFloat()
     << " = " << b->GetFloat() + d->GetFloat() << std::endl;
  delete b; delete d;
  return 0;
}

// Как реализовать операцию сложения b и d (для класа CA) чтобы получить
// указатель на CA, который конструируется при помощи CB или CD в зависимости
// от наличия дробной части результата (CD в 1-ом случае, CB во 2-ом)
  Вверх
cosmic
Дата 5.10.2002, 17:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 28.9.2002

Репутация: нет
Всего: нет



CA *operator + (CA *b, CA *d)
{
double z = b->GetInt () + d->GetInt () + b->GetFloat () + d->GetFloat ();
return b->GetID () == 2 || d->GetID () == 2 ? new CD (z) : new CB (z);
}

особенно меня порадовал e-mail в теле класса :)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0627 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.