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

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

21.10.2016, 12:44. Показов 1882. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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")
Этот код должен выводить на экран кубик, который по идее должен вращаться, но возникла проблема:...

9
6968 / 6013 / 2731
Регистрация: 14.04.2014
Сообщений: 25,738
21.10.2016, 13:08 2
И где она?
0
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
22.10.2016, 12:55  [ТС] 3
не знаю как сделать перезагрузку +=, присвоение(=) вроде работает
0
6968 / 6013 / 2731
Регистрация: 14.04.2014
Сообщений: 25,738
22.10.2016, 13:59 4
C++
1
2
3
4
5
6
    String & String::operator += (const String &obj2)
    {
        // здесь объединение
 
        return *this;
    };
0
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
26.10.2016, 14:20  [ТС] 5
Документ Microsoft Word.rar
0
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
26.10.2016, 14:21  [ТС] 6
помогите понять что за ошибка
0
6968 / 6013 / 2731
Регистрация: 14.04.2014
Сообщений: 25,738
26.10.2016, 21:26 7
Программу давай, на той картинке не видно ничего.
0
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
6968 / 6013 / 2731
Регистрация: 14.04.2014
Сообщений: 25,738
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
0 / 0 / 1
Регистрация: 27.09.2016
Сообщений: 10
31.10.2016, 17:32  [ТС] 10
на friend функции ввода вывода ругается
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2016, 17:32

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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...

Расставить между числами знаки "+" и "-" так, чтобы значение выражение стало равно 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...

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

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


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

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

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