Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
#1

переопределение операторов - C++

15.08.2013, 18:38. Просмотров 634. Ответов 16
Метки нет (Все метки)

Стоит следующая задача. Надо сделать массив чар, которые представляют собой строку (специально делать так, а не через string) и надо сделать переопределение операторов:
operator +
operator -
operator <
operator >
operator !=
operator ==
operator []

на пример, для operator +, чтобы можно было додавать две строки через знак +.
С чего начать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2013, 18:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос переопределение операторов (C++):

Переопределение операторов - C++
Плиз помогите сделать задачку.. Написать класс StrangeInt для которого нижеследующий код StrangeInt x = 5; StrangeInt y = 3; ...

переопределение операторов - C++
Писал прогу с переопределнием операторов, всё работало, теперь когда мне понадобилась та либа, в ней ничего не работает =( ...

Переопределение операторов - C++
Еще раз об этом интересном вопросе. У меня есть матрицы , условно назовём их тип matrix, есть библиотека, имеющая в своём составе функции...

Переопределение операторов С++ - C++
Помогите разобраться с переопределением операторов, как что и куда записывается, какие параметры. Если можно, ссылку на полезную статью, в...

Переопределение операторов - C++
Доброго времени суток.. В древние времена, когда ещё жили мамонты, ковырял я потихоньку плюсы.. Потом был долгий перерыв, и, как итог -...

Переопределение операторов и массивы - C++
Task* operator+=(Task *newTasks) { Task *finalTask = tasks + newTasks; } Error: 1 IntelliSense: выражение должно...

16
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
15.08.2013, 18:49 #2
С изучения литературы, поиска информации в google.
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3139 / 307
Регистрация: 04.12.2011
Сообщений: 8,661
Записей в блоге: 5
15.08.2013, 19:16 #3
Цитата Сообщение от Atlant_V Посмотреть сообщение
и надо сделать переопределение операторов
Переопределять не нужно. Вот весь штабель операторов, что перечислен нужно перегрузить. Вручную. Поработайте и если возникнут трудности, - спрашивайте.
1
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
16.08.2013, 15:54  [ТС] #4
Цитата Сообщение от IGPIGP Посмотреть сообщение
Переопределять не нужно. Вот весь штабель операторов, что перечислен нужно перегрузить. Вручную. Поработайте и если возникнут трудности, - спрашивайте.
Спасибо! Так и сделаю!

Добавлено через 18 часов 32 минуты
помогите написать правильно деструктор
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "iostream"
 
using namespace std;
 
class str
{
private:
    char* mas;
    int length;
public:
    str(char word[])
    {
        int strlength=strlen(word);
        length=strlength;
        mas=new char[length];
        //mas=word;
        for(int i=0;i<length;i++)
        {
            mas[i]=word[i];
        }
        mas[length]='\0';
    }
    str(int length1)
    {
        
        length=length1;
        mas=new char[length];       
        for(int i=0;i<length;i++)
        {
            mas[i]='\0';
        }
        
    }
    ~str()                                      //помогите написать правильно деструктор
    {
        
        delete []mas;
        
    }
    void print()
    {
        cout<<mas<<endl;
    }
    str operator+(str next)
    {
        int wlen=length+next.length+1;
        str temp(wlen);
        for(int i=0;i<length;i++)
        {
            temp.mas[i]=mas[i];
        }
        temp.mas[length]=' ';
        for(int i=0;i<next.length;i++)
        {
            temp.mas[i+1+length]=next.mas[i];
        }
        temp.mas[wlen]='\0';
        return temp;
    }
    bool operator>(str next)
    {
        //return length>next.length;
        int minlenght=(length<next.length)?length:next.length;
        for(int i=0;i<minlenght;i++)
            if(mas[i]!=next.mas[i])
                if(mas[i]>next.mas[i])return true;
                else return false;
    }
};
int main()
{
     char w[]="Hello world";
     str s(w);
     char w2[]="Vanja";
     str s2(w2);
     str s3=s+s2;
     s3.print();
     cout<<(s>s2);
     //s.print();
     return 0;
}
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 16:07 #5
А чет тот который есть не подходит?
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
16.08.2013, 16:10 #6
Atlant_V, 3 строчки лень написать? совсем докатились.
C++
1
2
3
~str(){
  delete[] mas;
}
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.08.2013, 16:11 #7
Цитата Сообщение от Atlant_V Посмотреть сообщение
mas=new char[length];
C++
1
mas=new char[length+1];
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 16:29 #8
Кузя, так у него же уже есть деструктор.
0
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
16.08.2013, 16:30  [ТС] #9
Цитата Сообщение от castaway Посмотреть сообщение
А чет тот который есть не подходит?
Нет, не работает
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 16:31 #10
Почему ты решил что он работает?
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
16.08.2013, 16:32 #11
Цитата Сообщение от castaway Посмотреть сообщение
Кузя, так у него же уже есть деструктор.
Так он говорил "помогите написать правильно деструктор" же! Ну, кто ж мог подумать?
0
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
16.08.2013, 16:36  [ТС] #12
Цитата Сообщение от Jupiter Посмотреть сообщение
Код C++
1
mas=new char[length+1];
Для чего ето?
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 16:38 #13
Так он у него правильный.
У него память выделяется не правильно, как уже сказали.

Добавлено через 1 минуту
Для того чтобы работало правильно.
0
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
16.08.2013, 16:38  [ТС] #14
Цитата Сообщение от castaway Посмотреть сообщение
Почему ты решил что он работает?
Программа не компилитса
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.08.2013, 16:39 #15
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Atlant_V Посмотреть сообщение
Для чего ето?
15-я строка
Цитата Сообщение от Atlant_V Посмотреть сообщение
mas=new char[length];
выделили память под length символов, первый символ имеет индекс 0, последний length - 1,
а 21-й строке
Цитата Сообщение от Atlant_V Посмотреть сообщение
mas[length]='\0';
уже выходишь за пределы массива

Добавлено через 36 секунд

Не по теме:

Цитата Сообщение от Atlant_V Посмотреть сообщение
Программа не компилитса
ТЕЛЕПАТЫ В ОТПУСКЕ

4
16.08.2013, 16:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2013, 16:39
Привет! Вот еще темы с ответами:

Создать класс строку в С++. Переопределение операторов - C++
Доброго времени суток. Подскажите пожалуйста в чём ошибка в операторе &gt;&gt;. Когда его вызываю в основной программе, то почему-то компилятор...

Возможно ли переопределение операторов для пользовательских типов? - C++
Собственно преследуемая цель: Определить свой тип int - myint. Переопределить для него операторы как надо. Ну, например, надо мне при...

Переопределение операторов как член-класса и как дружественная функция - C++
Привет. Задача создать класс целых чисел, для него нужно переопределить операторы ++ и + как функции-члены и -- и - как дружественные...

Переопределение операторов, создание класса "Матрица" - C++
Здравствуйте, нужна помощь, уже очень долго не могу понять в чём проблема. Создал класс матрица, не работает простой код. Проблема в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru