Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Lerd
0 / 0 / 0
Регистрация: 23.12.2014
Сообщений: 4
1

Функция сложения C строк. Правильно ли написана?

08.03.2015, 17:38. Просмотров 226. Ответов 2
Метки нет (Все метки)

Ребят, интересует вопрос, нужна ли строчка "delete sum;"? По логике: надо очистить выделенную память. На деле: если я её очищу, то не передаст ли return несуществующий объект?

String - пользовательский тип (не путать со string из std).

C++
1
2
3
4
5
6
7
8
9
10
const String & String::operator+(const String & s) const {
    String * sum = new String;
    char * str = new char[this->len + s.len + 1];
    str[0] = '\0';
    strcat_s(str, this->len + 1, this->str);
    strcat_s(str, this->len + s.len + 1, s.str);
    *sum = String(str);
    return *sum;
    delete sum;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2015, 17:38
Ответы с готовыми решениями:

Правильно ли написана функция проверки на параллельность двух отрезков?
Вот написал функцию проверки на параллельность двух отрезков bool...

Правильно ли написана функция, делящая предложение на слова, и связывающая определения в одно предложение?
Подскажите пожалуйста правильно ли я написала функцию, которая должна делить...

Правильно ли написана программа?
Задача такова. Перед авиаперелётом на известное расстояние закупается...

Правильно ли написана программа?
#include <tchar.h> #include <stdio.h> #include <iostream> int _tmain(int...

Правильно ли написана задача
здравствуйте помогите решить задачу на с++ я вроде решил но не пойму где...

2
zss
Модератор
Эксперт С++
7188 / 6682 / 4231
Регистрация: 18.12.2011
Сообщений: 17,635
Завершенные тесты: 1
08.03.2015, 17:42 2
Да, но не тут, в вызывающем коде.
Поэтому функция очень нелогичная. Верните результат по значению
C++
1
2
3
4
5
6
7
8
9
10
String String::operator+(const String & s) const {
    String sum;
    char * str = new char[this->len + s.len + 1];
    str[0] = '\0';
    strcat_s(str, this->len + 1, this->str);
    strcat_s(str, this->len + s.len + 1, s.str);
    sum = String(str);
    delete[] str; // обязательно надо
    return sum;
}
1
Lerd
0 / 0 / 0
Регистрация: 23.12.2014
Сообщений: 4
08.03.2015, 17:53  [ТС] 3
Точно, спасибо большое. Что-то я намудрил.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2015, 17:53

Правильно ли написана программа?
//--------------------------------------------------------------------------- ...

Правильно ли написана программа?
здравтвуйте! изучаю с++ на данный момент К Л А С С Ы...хотел написать свою...

Правильно ли написана программа
Почему мне компилятор выдает ошибку после main? #include <stdio.h>...


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

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

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