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

Классы строк, массивы преобразование и т.д - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вводится последовательность целых чисел, 0 её конец http://www.cyberforum.ru/cpp-beginners/thread896381.html
Очень прошу помощи в решении данной задачи : Вводится последовательность целых чисел, 0 конец последовательности. Для каждого числа последовательности найти сумму его простых делителей (нахождение...
C++ Перегрузка функций (Создать класс Set ) Создать класс Set – множество целых чисел, используя динамическую память. Определить операторы работы с множествами: "+" – объединение, "*" – пересечение, "-" вычитание, как дружественные функции, а... http://www.cyberforum.ru/cpp-beginners/thread896374.html
C++ Сосчитать количество слов в файле с русским текстом ; количество слов, которые начинаются с заданного буквосочетания.
Нужна программа чтобы нормально работала через Borland c++ Сосчитать количество слов в файле с русским текстом ; количество слов, которые начинаются с заданного буквосочетания.
Описать структуру с именем NOTE C++
Описать структуру с именем NOTE, содержащую поля: - фамилия и имя; - номер телефона; - дата рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: - ввод с...
C++ Завтра курсовая! Составить команду из четырёх лучших бегунов для участия в эстафете 4х100 http://www.cyberforum.ru/cpp-beginners/thread896360.html
Элементы вещественного массива размером N содержат результаты забега на 100 м N спортсменов, измеренные в сек. Составить команду из четырёх лучших бегунов для участия в эстафете 4х100 (указать...
C++ MPI сложение матриц Здравствуйте, вот такое задание, посчитать сумму матриц, распараллелив на кластере. Я не могу понять как правильно реализовать этот случай так, что бы автоматически считалось на разном... подробнее

Показать сообщение отдельно
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
09.06.2013, 19:16
Вы забываете про символ '\0' при копировании строки(то, что вы сделали во второй версии конструктора). А вообще, более корректно было бы сделать так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
LINE& operator= (const LINE& rhs)
{
    // проверяем не присваивается ли объект самому себе
    if(&rhs == this)
        return *this;
 
    // сначала пробуем выделить память
    // (Здесь может возникнуть исключение(ошибка). До этого момента важно не менять состояние(поля) объекта...
    // ...чтобы после обработки исключения он не оказался в некоррекном состоянии)
    char* tmp = new char[rhs.dlinna_stroki + 1]; 
 
    // если предыдущая строка выполнилась нормально, освобождаем память
    delete[] stroka; 
 
    // копируем новое содержимое в только что выделенную область памяти...
    // ...и присваиваем указатель на неё указателю strokа
    stroka = strcpy(tmp, rhs.stroka);
 
    dlinna_stroki = rhs.dlinna_stroki;
 
    // возвращаем ссылку на самого себя(стандартное поведение оператора =)
    return *this; 
}
И исправьте
C++
1
LINE(char *massiv)
C++
1
char *get_stroka() const
на
C++
1
LINE(const char *massiv)
C++
1
const char *get_stroka() const
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru