Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 21.02.2010
Сообщений: 5

Перегрузить

21.02.2010, 22:17. Показов 1109. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемы форумчание нужна помощь, задание связанно с перегузкой операций.
Задание: разработать класс оболочку int и перегрузить операции + - * / += -= *= /= == !=
Всё кроме + - * / я сделал , не знаю как перегрузить, операции, но думаю без
this не обойтись.
Вот исходник.

#include <iostream.h>

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
class MyInt {
int var;
public:
    MyInt():var(0){}
    MyInt(int v) : var(v){}
 
MyInt& operator +=(const MyInt&p){
var+=p.var;
return *this;
}
MyInt& operator -=(const MyInt&p){
var-=p.var;
return *this;
}
 
MyInt& operator *=(const MyInt&p){
var*=p.var;
return *this;
}
 
MyInt& operator /=(const MyInt&p){
var/=p.var;
return *this;
}
 
 
bool operator ==(const MyInt&p){
return (var==p.var)? true:false;
}
 
bool operator !=(const MyInt&p){
return (var!=p.var)? true:false;
}
 
//А как сделать + - / *
};
 
 
 
 
int main(){
 
return 0;
}
Помогите хоть как - нибудь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2010, 22:17
Ответы с готовыми решениями:

Перегрузить << и ==
Суть задания в том, чтобы создать маленький класс и перегрузить эти операторы. Не могу понять, что именно должно произойти, сама тема...

Перегрузить
#include &lt;conio&gt; #include &lt;iostream&gt; #include &lt;stdio&gt; using namespace std; class summa { private: double first; int second; ...

Перегрузить оператор -
Есть 2 масива если в них есть 2 одинаковых числа то з первого масива что бы изменялось на ноль например то число которое есть во втором...

7
Maniac
Эксперт С++
 Аватар для ISergey
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
21.02.2010, 22:22
Как то так..
C++
1
2
3
4
5
MyInt operator + (const MyInt& rhs){
  MyInt res(this->v);
  res.v += rhs.v;
  return res;
}
1
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
21.02.2010, 22:22
Ни чего сложного:
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
#include <iostream.h>
#include <stdlib.h>
 
 
class MyInt {
int var;
public:
    MyInt():var(0){}
    MyInt(int v) : var(v){}
 
MyInt& operator +=(const MyInt&p){
var+=p.var;
return *this;
}
MyInt& operator -=(const MyInt&p){
var-=p.var;
return *this;
}
 
MyInt& operator *=(const MyInt&p){
var*=p.var;
return *this;
}
 
MyInt& operator /=(const MyInt&p){
var/=p.var;
return *this;
}
 
 
bool operator ==(const MyInt&p){
return (var==p.var)? true:false;
}
 
bool operator !=(const MyInt&p){
return (var!=p.var)? true:false;
}
 
//А как сделать + - / *
 
//Вот так:
MyInt operator + (const MyInt&p){
MyInt obj = *this;
obj.var+=p.var;
return obj ;
}
 
MyInt operator -(const MyInt&p){
MyInt obj = *this;
obj.var-=p.var;
return obj ;
}
 
MyInt operator * (const MyInt&p){
MyInt obj = *this;
obj.var*=p.var;
return obj ;
}
 
MyInt operator /(const MyInt&p){
MyInt obj = *this;
obj.var/=p.var;
return obj ;
}
 
};
 
 
 
 
int main(){
MyInt obj_s(1),obj_d(2);
MyInt t(0);
t = obj_s+obj_d;  
return 0;
}
1
1 / 1 / 0
Регистрация: 21.02.2010
Сообщений: 5
21.02.2010, 22:25  [ТС]
Спасибо всем большое.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
21.02.2010, 22:54
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
#include <iostream>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
ostream &operator << (ostream &out, const char *text)
{
    int n = strlen(text);
    char *s = new char[ n+1 ];
    CharToOem(text, s);
    out.write(s, n);
    return out;
}
 
class MyInt
{
private:
    int inf;
public:
    MyInt(int a) { inf = a; }
    MyInt() { inf = 0; }
    int get() { return inf; }
    MyInt operator =  (const MyInt &a) { inf = a.inf; }
    MyInt operator += (const MyInt &a) { inf += a.inf; }
    MyInt operator -= (const MyInt &a) { inf -= a.inf; }
    MyInt operator *= (const MyInt &a) { inf *= a.inf; }
    MyInt operator /= (const MyInt &a) { inf /= a.inf; }
    
    MyInt operator + (const MyInt &a) { return inf + a.inf; }
    MyInt operator - (const MyInt &a) { return inf - a.inf; }    
    MyInt operator * (const MyInt &a) { return inf * a.inf; }
    MyInt operator / (const MyInt &a) { return inf / a.inf; }
 
    bool operator == (const MyInt &a) { return inf == a.inf; }
    bool operator != (const MyInt &a) { return inf != a.inf; }
    bool operator >  (const MyInt &a) { return inf > a.inf; }
    bool operator <  (const MyInt &a) { return inf < a.inf; }
    bool operator >= (const MyInt &a) { return inf >= a.inf; }
    bool operator <= (const MyInt &a) { return inf <= a.inf; }
};
  
int main()
{ 
    MyInt a(2), b(3);
    cout << b.get() << endl;
    b += a;
    cout << b.get() << " " << (a == b) << endl;
    b -= a;
    cout << b.get() << " " << (a != b) << endl;
    a += 1;
    cout << b.get() << " " << (a >= b) << endl;
    system ("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 10
22.02.2010, 01:26
Помогите пожалуйста)))))
Сама особо не понимаю....Да еще и тема такая не женская))))..трудная для меня то есть))))

Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как
динамический массив. Для этого определение класса должно иметь следующие поля:
- указатель на начало массива;
- максимальный размер массива;
- текущий размер массива.
Определить и реализовать в классе конструкторы, деструктор, функции Input() (ввод с
клавиатуры) и Print() (вывод на экран), перегрузить операцию присваивания.

И вот конкретное задание
АДТ − стек. Дополнительно перегрузить следующие операции:
- «+» − добавить элемент в стек;
- «-» − извлечь элемент из стека;
- «bool()» − проверка, пустой ли стек.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
22.02.2010, 10:00
mstack.hpp
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
template <typename T>
struct node
{
    T inf;
    node<T>* next;
};
 
template <typename T>
class mstack
{
private:
    node<T>* head;
public:
    mstack(){head = NULL;}
    ~mstack(){}
    
    void push(T &val)
    {
        node<T>* tmp = new node<T>;
        tmp->inf = val;
        tmp->next = head;
        head = tmp;
    }
    
    void clear()
    {
        while (head->next != NULL)
        {
            node<T>* tmp = head;
            head = head->next;
            delete tmp;
        }
        head = NULL;
    }
    
    bool empty(){return (head == NULL);}
    
    T pop()
    {
        T res = head->inf;
        node<T>* tmp = head;
        head = head->next;
        delete tmp;
        return res;
    }
};
mstack.cpp
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
#include <iostream>
#include <string>
#include "mstack.hpp"
 
using namespace std;
 
int main()
{
    mstack <string> s;
    int key;
    string val;
    do
    {
        system("cls");
        cout << "\tStack\t\t\t\tmade by TFTM\n\n";
        cout << "1 - push\n";
        cout << "2 - pop & write\n";
        cout << "3 - exit\n\n";
        cout << "press key: ";
        cin >> key;
        switch (key)
        {
            case 1:
                {
                    cout << "\nenter element: ";
                    cin >> val;
                    s.push(val);
                    break;    
                }
            case 2:
                {
                    if (s.empty()) cout << "stack is empty..";
                    else
                    {
                        cout << "poping:\n";
                        while (!s.empty())
                            cout << s.pop() << endl;
                    }
                    system("pause");
                    break;    
                }
            default:
                {
                    if (key == 3) cout << "exiting succesfully..\n";
                    else cout << "press only 1, 2 or 3\n";
                    system("pause");
            }                
        }
    }
    while (key != 3);
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 10
15.03.2010, 00:00
ПОМОГИТЕ ПЛИИЗ....

Создать класс матриц, содержащий ссылку на unsigned long, число строк и столбцов и состояние ошибки. Определить конструкторы по умолчанию, конструктор с одним и с двумя параметрами, конструктор копирования, деструктор. Определить операторы =, +, -, +=, -=, *., *= с объектами этого класс, с unsigned long и с вектором, определенном в задании 10. Определить оператор [] так, чтобы обращение [][] к элементам имело смысл, аналогичный встроенному. Перегрузить операторы вывода и ввода в поток.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2010, 00:00
Помогаю со студенческими работами здесь

Перегрузить оператор []
Как два раза перегрузить оператор , чтобы можно было сложить +объект+ #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; ...

Перегрузить оператор
Привет всем! Помогите решить задачку. Перегрузить оператор для объекта содержащего два закрытых элемента так, чтоб элемент одного...

Перегрузить оператор
Хай class Stalk { int length; public: Stalk() { //cout &lt;&lt; &quot;Constructor Stack&quot; &lt;&lt; endl; } ...

Можно ли перегрузить [][]?
Мне нужна матрица в которой будет определенная область декартовой системы координат из первой четверти. Она может начинаться не в начале...

Не получается перегрузить <<
Здравствуйте!Хочу перегрузить оператор &lt;&lt; ,но не получается взять данные из private.Функция вроде дружественная.Пожалуйста,кто-нибудь...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru