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

Перегрузка оператора сложения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Элементарная ошибка в функции http://www.cyberforum.ru/cpp-beginners/thread739118.html
Не могу её найти, ибо функции для меня в диковинку, как и вообще программирование. int search (int n, int num_1, int num_2) { num_1=0, num_2=0; bool noname=false; cout << "Введите количество чисел: "; cin >> n; cout << "Введите " << n << " целых чисел: "; int x; for (int i=1;i<=n;i++)
C++ Сборник с задачами Посоветуйте хороший сборник с задачами, потому что скучно мне) http://www.cyberforum.ru/cpp-beginners/thread739114.html
Вычислить сумму чисел Фибоначчи, значение которых не превосходит 500 C++
с++ Вычислить сумму чисел Фибоначчи , значение которых не превосходит 500.
C++ с++ Найти сумму 15 членов ряда ,в котором an = 10n /n!
Найти сумму 15 членов ряда ,в котором an = 10n /n!
C++ С++ Дана некоторая последовательность вещественных чисел. Определить количество элементов равных 0 http://www.cyberforum.ru/cpp-beginners/thread739106.html
Определить количество элементов равных 0.
C++ Есть ли среди чисел в диапазоне от А до В такие, произведение цифр которых равно С? 1. Написать программу на языке С++ для решения задачи: Даны два числа А, В и С. Определить, есть ли среди чисел в диапазоне от А до В такие, произведение цифр которых равно С.1. Написать программу на языке С++ для решения задачи: Даны два числа А, В и С. Определить, есть ли среди чисел в диапазоне от А до В такие, произведение цифр которых равно С. согласно правил форума - одна тема - одна... подробнее

Показать сообщение отдельно
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100

Перегрузка оператора сложения - C++

19.12.2012, 23:23. Просмотров 2868. Ответов 3
Метки (Все метки)

У меня есть класс, который содержит в себе строку и ее длину. Класс распределяет динамическую память для хранения строки. Передо мной стоит задача: перегрузить оператор сложения дважды. Один раз так, чтобы он мог слаживать строки объектов, а второй раз так, чтобы я мог сложить строку со строкой объекта. Так вот, первую функцию (сложение двух объектов) я определил как метод класса, и она работает безотказно. Вот код:
C++
1
2
3
4
5
6
String & String::operator +(const String &st)     
{
    strcat(str,st.str);
    len=strlen(str);
    return *this;
}
Вторую функцию (сложение строки и объекта) я определил как дружественную, так как это крайне необходимо (нужно, чтобы я мог слаживать как "строка+ объект", а не как "объект + строка"). Вот сам код:
C++
1
2
3
4
5
6
7
8
9
10
String & operator+(const char *s,const String &st)  
{
    String temp;
    delete [] temp.str;
    temp.str=new char[strlen(s)+st.len+1];
    strcat(temp.str,s);
    strcat(temp.str,st.str);
    temp.len=strlen(temp.str);
    return temp;
}
так вот эта функция не работает, прога крашится на динамическом выделении памяти (жалуется на конструктор копирования). Подскажите, в чем именно мой бок? Как сделать правильно? Ато я уже второй день мучаюсь, ничего не получается
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru