0 / 0 / 0
Регистрация: 27.09.2016
Сообщений: 1
1

Почему в коде не работает перегрузка операторов?

27.09.2016, 16:57. Показов 714. Ответов 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
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
#include <iostream>
#include <vector>
 
using namespace std;
 
class vartist {
 
private:
    float a, b;
 
public:
    vartist(float i): a(i) 
    {}
    void set_a(float a1) { a = a1; }
    int get_a() const { return a; }
 
    float first, second;
 
    vartist() {
        first = second = 0;
    }
 
    vartist(float x, float y) {
        first = x;
        second = y;
    }
    void input() {
        cout << "Введите количество единиц товара: " << endl;
        cin >> first;
        cout << "Введите стоимость товара: " << endl;
        cin >> second;
        
    }
    double cost() {
        double mn = 0;
        if (first >= 0 && second >= 0) {
            mn = first * second;
        }
        else {
            cout << "Введите верные поля! " << endl; input();
        }
        return mn;
    }
 
    void view() {
        cout << first << "\t" << second << "\t";
    }
    void view_cost() {
        cout << "Полная стоимость: " << cost() << endl;
    }
 
    vartist& operator=(vartist& right) {//операція присвоєння
        if (this == &right) {
            return *this;
        }
        a = right.get_a();
        return *this;
    }
 
};
 
 
vartist& operator- (const vartist& i) {// перевантаження унарного -
    return vartist (-i.get_a());
}
 
vartist& operator* (const vartist& value1, const vartist&value2) {//перевантаження бінарного *
    return vartist(value1.get_a() * value2.get_a());
}
 
int main() {
 
    setlocale(LC_ALL, "Russian");
 
    vartist func1, func2(3, 5);
    func1.view();
    func1.input();
    func1.view_cost();
 
    func2.view();
    func2.view_cost();
 
 
    vartist res = func1 * func2;
    cout << "Бинарное умножение = " << res.get_a() << endl;
 
    func2 = -func2;
    cout << "Унарный минус = " << func2.get_a() << endl;
 
    func2 = func1;
    cout << "Операторы присваивания = " << func2.get_a() << endl;
 
 
    vector <vartist> A;
    int N;
    cout << "Введите количество элементов массива: ";
    cin >> N;
    for (int i = 0; i < N; i++) {
        vartist a;
        a.input();
        A.push_back(a);
    }
 
    int sum = 0;
    for (int i = 0; i < N; i++) {
        sum = sum + A[i].cost();
    }
    cout << "Общая стоимость: " << sum << "\n";
 
    system("pause");
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2016, 16:57
Ответы с готовыми решениями:

Перегрузка функций и операторов, почему программа не работает?
Помогите пожалуйста разобраться почему не работает программа? Создать класс 2-D координат....

перегрузка операторов почему ошибка
Вообще ошибка описана снизу но может кто поможет сделать программу ,чтобы строка ,введенная в Текст...

Исправить ошибку в коде. Дружественные функции и классы, перегрузка операторов
В коде программы есть ошибки, помогите, пожалуйста, их исправить #include &quot;pch.h&quot; #include...

Не работает перегрузка операторов
Не работает перегрузка операторов public static LMatrix operator*(LMatrix a, LMatrix b) ...

1
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
27.09.2016, 18:19 2
C++
1
2
3
4
5
6
7
vartist& operator- (const vartist& i) {// перевантаження унарного -
    return vartist (-i.get_a());
}
 
vartist& operator* (const vartist& value1, const vartist&value2) {//перевантаження бінарного *
    return vartist(value1.get_a() * value2.get_a());
}
Это круто, Чувак! Но в блоке создается временный объект, ссылку на который не принято возвращать, ибо он откинется раньше. Может их внутрь класса еще добавить?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2016, 18:19
Помогаю со студенческими работами здесь

Перегрузка операторов - Оба случая работают правильно, почему так?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;windows.h&quot; using...

Не работает перегрузка операторов шаблонного класса
помогите кто может разобрать что не работает( в понедельник екзамен, а я так туплю... все ошибки и...

Не работает перегрузка операторов при выводе в cout
написал свой класс ComplexNumber. перегрузил для него операторы +, -, *, /, &lt;&lt;. конструкции вида ...

При раздельной компиляции не работает перегрузка операторов ввода-вывода
разделил программу и при компиляции компилятор ругается на объявление перегрузки операторов ввода...

Почему смена текста работает только один раз? Что неправильно в коде и почему?
Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна...

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru