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

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

21.10.2016, 12:44. Просмотров 364. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перегрузить операторы "=", "+=" так, чтобы производилось сложение строки и объекта (C++):

Подскажите как перегрузить операторы ">>", "<<" и "="
Кто знает, подскажите как перегрузить операторы &quot;&gt;&gt;&quot;, &quot;&lt;&lt;&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;...

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

9
nmcf
6245 / 5557 / 2527
Регистрация: 14.04.2014
Сообщений: 23,369
21.10.2016, 13:08 #2
И где она?
0
qazplm
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
22.10.2016, 12:55  [ТС] #3
не знаю как сделать перезагрузку +=, присвоение(=) вроде работает
0
nmcf
6245 / 5557 / 2527
Регистрация: 14.04.2014
Сообщений: 23,369
22.10.2016, 13:59 #4
C++
1
2
3
4
5
6
    String & String::operator += (const String &obj2)
    {
        // здесь объединение
 
        return *this;
    };
0
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
6245 / 5557 / 2527
Регистрация: 14.04.2014
Сообщений: 23,369
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
6245 / 5557 / 2527
Регистрация: 14.04.2014
Сообщений: 23,369
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
Привет! Вот еще темы с решениями:

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

Как сделать так, чтобы scanf в переменную double мог считывать с клавиатуры не только "0,01", но и "0.01"
Помогите!) Не знаю, искал, не нашел, возможно ли вообще. Чтобы и так и так...

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

Как сделать так, чтобы введенное с клавиатуры слово "helllo" в памяти сохранялось в виде "Hello".
Здравствуйте. Подскажите пожалауйста как сделать чтоб согда я вводу с...


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

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

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