1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Перегрузка операторов и полиморфизм

Тема в разделе "С и С++", создана пользователем grokk, 11 май 2008.

  1. grokk

    grokk Гость

    Репутация:
    0
    Есть массив указателей Data* в каждой ячейке которого указатель на string,int или float
    Никак не получается перегрузить оператор + так чтобы string+string оставался string int+float оставался float int+int -int string+int/float-string

    Заранее спасибо за помощь)

    [codebox]class Data
    {
    public:
    virtual ~Data() {};
    virtual void CheckData() const=0;
    //virtual void Print() const=0;
    // const Data* operator+ (const Data*);
    };

    class Int:public Data
    {
    int i;
    public:

    Int (int int_num) {i=int_num;};
    void CheckData()const {
    cout<<"Int number "<<i<<endl;
    }
    };
    class Float:public Data
    {
    float f;
    public:
    Float (float float_num) {f=float_num;};
    void CheckData()const {
    cout<<"Float number "<<f<<endl;
    }
    };


    Data* InputData();[/codebox]


    [codebox]#include <iostream>
    #include <string>
    #include "data.h"
    #include "string.h"

    using namespace std;

    Data* InputData()
    {
    int flag,int_num,count=0;
    float float_num;
    char str[20];char c;
    Data* item;
    do
    {
    cout<<"(1)int (2)float (3)string: ";
    cin>>flag;
    }while (flag<1 || flag>3);

    switch (flag)
    {
    case 1:{
    cout<<"Enter int number ";
    cin>>int_num;
    item=new Int(int_num);
    return item;
    break;
    }
    case 2:{
    cout<<"Enter float number ";
    cin>>float_num;
    item=new Float(float_num);
    return item;
    break;
    }
    case 3:{
    cout<<"Enter String. Max lenght 20 ";
    cin>>str;
    item=new String(str);
    return item;
    break;
    }
    }
    return NULL;
    }[/codebox]
     
  2. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Джефф Элджер, библиотека программиста (http://rapidshare.com/files/43997307/c_biblioteka_programmista.rar)
    Стр. 162.
    Вот: http://www.cap-design.ru/ccc/129.php
     
  3. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Хотя лично мне вариант с case больше симпатизирует :(
     
Загрузка...
Похожие Темы - Перегрузка операторов полиморфизм
  1. lisica198808
    Ответов:
    0
    Просмотров:
    1.067
  2. MGeorge
    Ответов:
    0
    Просмотров:
    1.439
  3. sasha465
    Ответов:
    1
    Просмотров:
    1.522
  4. XADD
    Ответов:
    1
    Просмотров:
    1.151
  5. XADD
    Ответов:
    9
    Просмотров:
    2.616

Поделиться этой страницей