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

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

Войти
Регистрация
Восстановить пароль
 
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
#1

Перегрузка оператора += - C++

23.09.2012, 01:52. Просмотров 366. Ответов 7
Метки нет (Все метки)

реализую класс собственных строк называеться MyString
вылетает при использовании оператора +=
самое интересное что если дебажишь код по шагам всё проходит успешно
сама реализация оператора:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MyString& MyString::operator +=(MyString &s)
{
    if(!s.empty())
    {
    size+=s.Size();
    char temp[size];
    if(str)
    {
        strcpy(temp,str);
    }
    strcat(temp,s.str);
    //delete[] str;
    str=new char[size];
    strcpy(str,temp);
    return *this;
    }
    else return *this;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2012, 01:52     Перегрузка оператора +=
Посмотрите здесь:

Перегрузка оператора == - C++
Пытаюсь перегрузить оператор == . Делаю так: В классе: class cData // класс дата { int year; // год short mounth; //...

Перегрузка оператора -> - C++
Для чего она вообще и как её использовать? Черканите, если не трудно, "детский" примерчик !

Перегрузка оператора ++ - C++
Нужно создать операторы префиксного и постфиксного инкремента для приращения переменной itsRadius класса SimpleCircle. Переменная itsRadius...

Перегрузка оператора - C++
Доброго времени суток! Помогите, пожалуйста, с решением задачи: Описать класс множество целых чисел. Перегрузить следующую операцию: +...

Перегрузка оператора = - C++
Есть некий класс. И два класса-наследника. Надо перегрузить оператор =, к тому же в дочерних классах вызывать перегрузку в базовом классе....

Перегрузка оператора = - C++
Здравствуйте, возникла проблема при перегрузке оператора. const digit &operator=( const int & ); const digit &operator=( const char...

Перегрузка оператора ~ - C++
Доброго времени суток! Помогите пожалуйста с решением задачи. Описать класс множество целых чисел. Перегрузить следующую операцию: ~...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
23.09.2012, 01:54  [ТС]     Перегрузка оператора += #2
архив
Вложения
Тип файла: zip String.zip (275.1 Кб, 5 просмотров)
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
23.09.2012, 01:55     Перегрузка оператора += #3
maxon887, нужно выделять память size + 1 для символа-ограничителя '\0'
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
23.09.2012, 01:56  [ТС]     Перегрузка оператора += #4
так а почему она тогда, через раз работает???
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
23.09.2012, 01:57     Перегрузка оператора += #5
maxon887, потому что это UB. Вы выходите за пределы массива. Может случится все что угодно.
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
23.09.2012, 01:58  [ТС]     Перегрузка оператора += #6
да это правильно, дабавил, вылетает всё равно
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
23.09.2012, 02:22     Перегрузка оператора += #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MyString& MyString::operator +=(MyString &s)
{
    if ( !s.empty()) {
      size += s.Size();
      
      char *temp = str;
      
      str = new char [ size + 1 ];
      
      std::strcpy( str, temp );
      
      std::strcpy( str + ( size - s.size()), s.str );
 
      delete temp;
   }
   
   return *this;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 02:58     Перегрузка оператора +=
Еще ссылки по теме:

Перегрузка оператора - C++
Здравствуйте! Помогите разобраться с перегрузкой операторов. Суть задания: Осуществите перегрузку оператора “++” так, чтобы при его...

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

Перегрузка оператора ++ - C++
Написал префиксную перегрузку ++ Vremya &Vremya::operator ++ () { int sec = getSec(*this); //перевод в секунды ...

Перегрузка оператора - C++
Имеется время, например 12:12:12 Перегрузка инкремента Time &Time::operator ++ () { Next(); return *this; } ...

Перегрузка оператора >> - C++
Не понимаю, в чем проблема при перегрузке операторов << >> прочитал много статей, сделал как в примере, но msvs 2013 выдает ошибку: ...


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

Или воспользуйтесь поиском по форуму:
maxon887
12 / 12 / 3
Регистрация: 05.06.2012
Сообщений: 280
23.09.2012, 02:58  [ТС]     Перегрузка оператора += #8
сорри за поднятую тему))
проблема была в конструкторе по умолчанию))))
C++
1
2
3
4
5
MyString::MyString()
{
    size=0;
    str=0;
}
функции strcpy и strcat работают с (\0) строками
тоесть надо так
C++
1
2
3
4
5
[CPP]MyString::MyString()
{
    size=0;
    str="";
}
[/CPP]
Yandex
Объявления
23.09.2012, 02:58     Перегрузка оператора +=
Ответ Создать тему
Опции темы

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