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

Перегрузить операторы "=", "+=" так, чтобы производилось сложение строки и объекта

21.10.2016, 12:44. Просмотров 514. Ответов 9
Метки нет (Все метки)

помогите ,пожалуйста
вот задание:Реализовать класс String для работы со строками символов. Перегрузить операторы =, += так, чтобы производилось сложение строки и объекта. Предоставить конструктор копирования. Определить friend функции для операций ввода-вывода в поток.

Добавлено через 1 минуту
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
#include "stdafx.h"
#include <iostream> 
#include <string>
using namespace std;
 
struct String {
    size_t size;
    char *str;
public:
    friend ostream &operator<<(ostream &stream, String obj);
    friend istream &operator>>(istream &stream, String obj);
    String(char *str = "");
    ~String();
    String(const String &obj)
    {
        if (size != obj.size)
        {
            size = obj.size;
            delete[] str;
            str = new char[size + 1];
        }
        strcpy_s(str,strlen(str), obj.str);
    }
    void String::operator=(String &obj2)
    {
        delete str;
        str = new char[size = obj2.size];
        strcpy_s(str, strlen(str), obj2.str);
    };
    int main()
    {
        setlocale(0, "");
        String obj1, obj2;
        int deistv;
        cout << "The first string";
        cin >> obj1;
        cout << "\nYour string";
        cout << obj1;
        cout << "The second string";
        cin >> obj2;
        cout << "\nYour string";
        obj1 = obj2;
        cout << obj2;
        system("PAUSE");
        return 0;
 
    } 
};
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2016, 12:44
Ответы с готовыми решениями:

Подскажите как перегрузить операторы ">>", "<<" и "="
Кто знает, подскажите как перегрузить операторы &quot;&gt;&gt;&quot;, &quot;&lt;&lt;&quot; и &quot;=&quot; ?

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Visual Studio не читает операторы, что начинаются на "glu" ("gluBuild2DMipmaps", "gluPerspective")
Данный код должен выводить на экран кубик который должен вращаться, но возникла проблема. Для...

Перегрузить "operator -" так, чтобы из вектора удалялся элемент, присутствующий во втором векторе
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace...

9
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
21.10.2016, 13:08 2
И где она?
0
qazplm
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
22.10.2016, 12:55  [ТС] 3
не знаю как сделать перезагрузку +=, присвоение(=) вроде работает
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
22.10.2016, 13:59 4
C++
1
2
3
4
5
6
    String & String::operator += (const String &obj2)
    {
        // здесь объединение
 
        return *this;
    };
0
22.10.2016, 13:59
qazplm
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
26.10.2016, 14:20  [ТС] 5
Документ Microsoft Word.rar
0
qazplm
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
26.10.2016, 14:21  [ТС] 6
помогите понять что за ошибка
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
26.10.2016, 21:26 7
Программу давай, на той картинке не видно ничего.
0
qazplm
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
28.10.2016, 12:56  [ТС] 8
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
82
83
84
85
86
#include "stdafx.h"
#include <iostream> 
#include <string>
using namespace std;
 
class String
{
public:
    char *str;
    void operator=(String &obj2);
    void operator+=(String &obj2);
    String(); // к-тор преобразования/по умолчанию 
    String(const String &); // конструктор копии 
    ~String();
    friend ostream &operator<<(ostream &stream, String obj);
    friend istream &operator>>(istream &stream, String obj);
private:
    int length;
    char *sPtr; 
};
String::String()
{} 
String::String(const String &copy)
{
    str = new char[length + 1];
    strcpy_s(str,strlen(str), copy.str);
} 
 
String::~String()
{} 
//Присвоение
void String :: operator =(String &obj2)
    {
        delete[] sPtr; 
        length = obj2.length; 
        str = new char[length + 1];
        strcpy_s(this->str,strlen(str) ,obj2.str);
}
void String ::operator +=(String &obj2)
{
    size_t newLength = length + obj2.length; 
    char *tempPtr = new char[newLength + 1];
    strcpy_s(tempPtr, strlen(sPtr), sPtr);
    strcpy_s(tempPtr + length, strlen(obj2.sPtr), obj2.sPtr); 
    delete[] sPtr;  
    sPtr = tempPtr; 
    length = newLength; 
} 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    String obj1, obj2;
    int deistv;
    cout << "The first string" ;
    cin >> obj1;
    cout << "\nYour string" ;
    cout << obj1;
    cout << "The second string" ;
    cin >> obj2;
    cout << "\nYour string" ;
    cout << obj2;
 
    while (1){
        cout << "\n" << "Select the action (overload):\n";
        cout << "1. Demonstration assignment" << endl;
        cout << "2. Fold (+=)" << endl;
        cout << "3. The output from the program" << endl;
        cout << "->";
        cin >> deistv;
        if (deistv == 1){
            obj2 = obj1;
            cout << obj2;
        }
 
        if (deistv == 2){
            obj2 += obj1;
            cout << obj2;
        }
 
        if (deistv == 3){
            system("PAUSE");
            return 0;
        }
    }
}
0
nmcf
6527 / 5751 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
28.10.2016, 19:27 9
C++
1
2
3
4
5
6
7
8
9
10
String & String::operator += (const String &obj2)
{
    size_t newLength = length + obj2.length; 
    char *tempPtr = new char[newLength + 1];
    strcat(strcpy(tempPtr, sPtr), obj2.sPtr);
    delete[] sPtr;  
    sPtr = tempPtr; 
    length = newLength;
    return *this;
}
1
qazplm
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
31.10.2016, 17:32  [ТС] 10
на friend функции ввода вывода ругается
0
31.10.2016, 17:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2016, 17:32

Расставить между числами знаки "+" и "-" так, чтобы значение выражение стало равно S
Даны N целых чисел X1, X2, ..., XN. Расставить между ними знаки &quot;+&quot; и &quot;-&quot; так, чтобы значение...

Нужно сделать так, чтобы при вводе числа, выводило "рублей" или "рубль"
Начал решать задачу и засох на средине, не выходить формулу написать,если не сложно,подскажите) с...

Как сделать, так чтобы i и j можно было вводить самому "i" И "j" в цикле, есть программа
#include &lt;iostream&gt; using namespace std; int main() {int a=0,b=0; int i=0; cout&lt;&lt;&quot;Vvedite...


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

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

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