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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
qazplm
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 10
#1

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

21.10.2016, 12:44. Просмотров 307. Ответов 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++):

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

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

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

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

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

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

9
nmcf
5544 / 4854 / 1647
Регистрация: 14.04.2014
Сообщений: 19,710
21.10.2016, 13:08 #2
И где она?
0
qazplm
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 10
22.10.2016, 12:55  [ТС] #3
не знаю как сделать перезагрузку +=, присвоение(=) вроде работает
0
nmcf
5544 / 4854 / 1647
Регистрация: 14.04.2014
Сообщений: 19,710
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 / 0
Регистрация: 27.09.2016
Сообщений: 10
26.10.2016, 14:20  [ТС] #5
Документ Microsoft Word.rar
0
qazplm
0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 10
26.10.2016, 14:21  [ТС] #6
помогите понять что за ошибка
0
nmcf
5544 / 4854 / 1647
Регистрация: 14.04.2014
Сообщений: 19,710
26.10.2016, 21:26 #7
Программу давай, на той картинке не видно ничего.
0
qazplm
0 / 0 / 0
Регистрация: 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
5544 / 4854 / 1647
Регистрация: 14.04.2014
Сообщений: 19,710
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 / 0
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Нужно сделать так, чтобы при вводе числа, выводило "рублей" или "рубль" - C++
Начал решать задачу и засох на средине, не выходить формулу написать,если не сложно,подскажите) с с++ знаю пока что if,else и swith) //...

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

Зачем перегружать операторы "++", "<<", ">>" и что они дают? - C++
Здравствуйте. Я хотел спросить зачем перегружать оператор &quot;++&quot;, &quot;&lt;&lt;&quot;, &quot;&gt;&gt;&quot; и что они нам дают?


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

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

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