Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
4 / 3 / 1
Регистрация: 07.11.2019
Сообщений: 330

Перегрузка операторов (бинарных и унарных)

07.04.2020, 16:03. Показов 3580. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать на основе этого кода не менее 2 унарных и 2 бинарных операторы.
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
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
class DataLog
{
private:
    string name,lname,pnumber,date,email;
public:
    void setLog(string tname, string tlastname, string phnumber, string datek,string emailik)
    {
        name  = tname;
        lname = tlastname;
        pnumber  = phnumber;
        date = datek;
        email = emailik;
    }
    void getLog()
    {
        cout << "\nИмя: " << name << "\nФамилия: " << lname << "\nТелефон: " << pnumber << "\nДата регистрации: " << date << "\nE-mail " << email << endl;
    }
};
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "rus");
    string name, lname, pnumber,date,email;
     int n=1;
    while (n==1)
{
    cout << "\nВведите данные про пользователя:\n";
    cout << "\nИмя: ";     cin >> name;
    cout << "\nФамилия:  ";    cin >> lname;
    cout << "\nТелефон::  ";  cin >> pnumber;
    cout << "\nДата регистрации:  ";  cin >> date;
    cout << "\nE-mail:  ";  cin >> email;
    DataLog objDataLog;
    objDataLog.setLog(name, lname, pnumber,date,email);
    objDataLog.getLog();
        cout <<"\nДобавить еще одного абонента? (1 - Да)\n "; cin >>n;
}
    system("pause");
    return 0;
}
Добавлено через 19 минут
HELP
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.04.2020, 16:03
Ответы с готовыми решениями:

Перегрузка унарных и бинарных операторов в шаблоне
Доброго времени суток! Недавно столкнулся с проблемой при написании такого шаблона: template &lt;typename T&gt; class CPoint; ...

В чём отличие унарных и бинарных операторов?
Подскажите пожалуйста, это унарный или бинарный оператор (а-b для комплексных чисел). Я знаю, что бинарный оператор, это когда два...

Перегрузка унарных операторов
Здравствуйте! В книге Шилдта С++ Базовый курс много примеров по перегрузке операторов. По одному из них у меня вопрос. Перегружаем...

21
 Аватар для Recrut_rf
389 / 334 / 66
Регистрация: 14.10.2014
Сообщений: 1,475
07.04.2020, 18:22
Студворк — интернет-сервис помощи студентам
AlinkaP, добавил примеры использования перегрузок, у меня код компилируется и работает нормально

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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <iostream>
#include <stdlib.h>
#include <string>
 
#include <fstream>  // для файловых потоков
 
using namespace std;
 
class DataLog
{
private:
    string name, lname, pnumber, date, email;
public:
    // Вместо этого
    /*void setLog(string tname, string tlastname, string phnumber, string datek, string emailik)
    {
    name = tname;
    lname = tlastname;
    pnumber = phnumber;
    date = datek;
    email = emailik;
    }*/
    // И этого
    /*void getLog()
    {
    cout << "\nИмя: " << name << "\nФамилия: " << lname << "\nТелефон: " << pnumber << "\nДата регистрации: " << date << "\nE-mail " << email << endl;
    }*/
 
    // используем это
    friend ostream& operator<< (ostream& os, const DataLog& data);
    friend istream& operator >> (istream& is, DataLog& data);
 
    const std::string &operator *() const //Unary
    {
        return name;
    }
 
    bool operator !() const //Unary
    {
        return name.empty();
    }
 
    bool operator ==(const DataLog &other) const //Binary
    {
        return
            name == other.name &&
            lname == other.lname &&
            pnumber == other.pnumber &&
            date == other.date &&
            email == other.email;
    }
 
    DataLog &operator =(const DataLog &other) //Binary
    {
        name = other.name;
        lname = other.lname;
        pnumber = other.pnumber;
        date = other.date;
        email = other.email;
        return *this;
    }
};
 
ostream& operator<< (ostream& is, const DataLog& data)
{
    is << "\nИмя: ";
    is << data.name;
    is << "\nФамилия: ";
    is << data.lname;
    is << "\nТелефон: ";
    is << data.pnumber;
    is << "\nДата регистрации: ";
    is << data.date;
    is << "\nE-mail ";
    is << data.email;
    return is;
}
 
istream& operator >> (istream& os, DataLog& data)
{
    cout << "enter name ";
    os >> data.name;
    cout << "enter lname ";
    os >> data.lname;
    cout << "enter pnumber ";
    os >> data.pnumber;
    cout << "enter date ";
    os >> data.date;
    cout << "enter email ";
    os >> data.email;
    return os;
}
 
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "rus");
    string name, lname, pnumber, date, email;
    int n = 1;
    while (n == 1)
    {
 
        // Теперь закомментированный код не нужен
        /*
        cout << "\nВведите данные про пользователя:\n";
        cout << "\nИмя: ";     cin >> name;
        cout << "\nФамилия:  ";    cin >> lname;
        cout << "\nТелефон::  ";  cin >> pnumber;
        cout << "\nДата регистрации:  ";  cin >> date;
        cout << "\nE-mail:  ";  cin >> email;
        */
        DataLog objDataLog;
        //objDataLog.setLog(name, lname, pnumber, date, email);
        //objDataLog.getLog();  
 
        // можно просто спользовать cin и cout для ввода и вывода данных
        cin >> objDataLog;
        cout << objDataLog;
 
        // раз уж перегрузили << >> то теперь можно без проблем объекты DataLog отправлять в файл
        string path = "myFile.txt";
        ofstream fout;
        fout.open(path, ofstream::app);
        fout << objDataLog;
        fout.close();
 
        // Примеры использования других перегрузок класса
        DataLog objDataLog2;
        objDataLog2 = objDataLog;
        cout << "\nВыводим результат работы других перегруженных операторов \n";
        // true и false по умолчанию выводятся как 1 и 0
        cout << !objDataLog << ' ' << *objDataLog << ' ' << (objDataLog2 == objDataLog);
 
        cout << "\nДобавить еще одного абонента? (1 - Да)\n "; cin >> n;
    }
    system("pause");
    return 0;
}
0
4 / 3 / 1
Регистрация: 07.11.2019
Сообщений: 330
08.04.2020, 14:56  [ТС]
Recrut_rf, Благодарю)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.04.2020, 14:56

Перегрузка унарных операторов и создание класса матриц
Пункт 1. Создать класс - координаты с унарным ++ и --, -. ++ и -- постфиксная и префиксная. - меняет знак у обеих координат. ++ как...

C++11, перегрузка бинарных операторов с r-value ссылкой
Добрый день. не так давно стал познавать азы C++11/14. Вроде во многом уже разобрался, но все покоя не дает одна вещь: почему перегружают...

Перегрузка бинарных операторов для структуры в шаблонной функции
Добрый вечер уважаемые. Прошу помочь т.к. компилятор решил поставить меня в угол) Текст ошибки: 006.cpp(21): error C2804: бинарный...

Калькулятор бинарных и унарных операций
Здравствуйте. У меня есть код калькулятора, в котором я не могу правильно использовать циклы. Нужно сделать калькулятор и чтобы после...

Еще раз о бинарных и унарных операциях
Ну да все мы знаем, что в C++ есть бинарные, унарные и даже тернарные операции. Но вот почему то все учебники стыдливо обходят стороной...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru