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

Класс строк, перегрузка операторов. Как вернуть объект класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ STL, контейнер set http://www.cyberforum.ru/cpp-beginners/thread908117.html
Помогите, пожалуйста. Задание состоит вот в чем: даны названия городов, и для них перечислены города, в которые можно попасть без пересадок. Для рандомного названия города нужно вывести названия всех городов, в которые можно попасть из него с любым количеством пересадок. Использовать нужно контейнер STL set и, естественно, функцию set_union. Не могу понять вот что. Вот есть у нас файл,...
C++ Необходимо сформировать квадратную матрицу с вводимой размерностью n по данному образцу Необходимо сформировать квадратную матрицу с вводимой размерностью n по данному образцу 1 2 3 . . . . . . . n n n-1 n-2 . . 3 2 1 1 2 3 . . . . . . . n . . . . . . . . . . . . 1 2 3 . . . . . . . n n n-1 n-2 . . 3 2 1 Пожалуйста помогите! http://www.cyberforum.ru/cpp-beginners/thread908112.html
C++ Вывести на экран все двухзначные числа, в которых старшая цифра отличается от младшей не больше чем на 1
Вывести на экран все двухзначные числа, в которых старшая цифра отличается от младшей не больше чем на 1.
C++ Передача массивов указателей в качестве параметров функции
Доброго времени суток, не компилится данный код. Ошибка возникает в функции deal(deck, suit, face);. Код полностью скомпипастил из учебника (Дейтел Х., Дейтел П. - как программировать на c++). Делал все это я в VS 10. Вопрос: каким образом передавать(в VS 10) массивы указателей в качестве параметров функции? #include <iostream> #include <iomanip> #include <stdlib.h> #include <time.h>...
C++ Разработать класс (Объект «рациональная не сократимая дробь, представлен парой целых чисел») http://www.cyberforum.ru/cpp-beginners/thread908053.html
Разработать класс, набор методов (конструктор, деструктор и указанные методы) для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Привести программу (int main), которая использует объекты разработанного класса: Объект «рациональная не сократимая дробь, представлен парой целых чисел». Конструктор должен позволить создавать объекты без и с начальной...
C++ Переставить столбцы матрицы так, чтобы на побочной диагонали находились минимальные в текущих столбцах элементы Переставить столбцы матрицы так, чтобы на побочной диагонали находились минимальные в текущих столбцах элементы. Использовать матрицу размерностью Напишите код плиззз!!! подробнее

Показать сообщение отдельно
TamaGOch
9 / 9 / 0
Регистрация: 11.12.2012
Сообщений: 152
20.06.2013, 19:54     Класс строк, перегрузка операторов. Как вернуть объект класса
Коротко:
C++
1
2
3
4
5
6
7
# include "MyString.h"
void main ()
{
    My_String Address;
    Address = "Link";
    Res = Address + "OoO";
}
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
# ifndef MY_STRING
# define MY_STRING
class My_String
{
private:
    char* str;
    int lenght;
public:
    My_String () {str = 0; lenght = 0;}
    int Lenght () 
    {
        return lenght;
    }
    char operator[] (int number)
    {
        return str [number];
    }
    void operator = (char* str)
    {
        if (this->str) {delete [] this->str; this->str = 0;}
        int len = 0;
        if (str != 0)
        {
            int i = 0; while (str [i++]) {len++;}
            this->str = new char [len + 1];
            for (int i = 0; i < len; i++) {this->str [i] = str [i];}
            this->str [len] = 0;
            this->lenght = len;
        }
    }
    void operator = (const My_String& str)
    {
        if (this->str) {delete [] this->str; this->str = 0;}
        this->lenght = str.lenght;
        this->str = new char [this->lenght];
        for (int i = 0; i < this->lenght; i++)
        {
            this->str [i] = str.str [i];
        }
        this->str [this->lenght] = 0;
    }
    My_String operator + (const char* str)
    {
        My_String res;
        int len_1 = this->Lenght (),
            len_2 = 0,
            i = 0;
        while (str [i++]) {len_2++;}
        res.str = new char [len_1 + len_2 + 1];
        for (int i = 0; i < len_1; i++)
        {res.str [i] = this->str [i];}
        for (int i = 0; i < len_2; i++)
        {res.str [len_1 + i] = str [i];}
        res.str [len_1 + len_2] = 0;
        res.lenght = len_1 + len_2;
        return res;
    }
    My_String operator + (const My_String& str)
    {
        My_String res;
        res = 0;
        res.str = new char [this->lenght + str.lenght + 1]; 
        for (int i = 0; i < this->lenght; i++)
        {
            res.str [i] = this->str [i];
        }
        for (int i = 0; i < str.lenght; i++)
        {
            res.str [i + this->lenght] = str.str [i];
        }
        res.str [this->lenght + str.lenght] = 0;
        res.lenght = this->lenght + str.lenght;
        return res;
    }
    ~My_String ()
    {
        if (this->str) {delete [] this->str; this->str = 0;}
        this->lenght = 0;
    }
};
# endif
Помогите решить, как осуществить return в перегрузках конкатенации, т.к. в данном варианте у меня вызывается деструктор и убивает объект res. Или подскажите, какая из тем о перегрузках на это отвечает,
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru