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

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

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

Перегрузить - C++

21.02.2010, 22:17. Просмотров 469. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2010, 22:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузить (C++):

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

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

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

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

перегрузить оператор ++ - C++
Всем привет!!!Тут такое дело, когда запускаю программу она запускается, а когда дело доходит до перегрузки она выдает ошибку((: То есть...

Не получается перегрузить << - C++
Добрый день. Никак не получается вывести разность a-b. Однако компилятор не ругается, если выводить только один объект. Хедер с...

7
ISergey
Maniac
Эксперт С++
1395 / 906 / 56
Регистрация: 02.01.2009
Сообщений: 2,706
Записей в блоге: 1
21.02.2010, 22:22 #2
Как то так..
C++
1
2
3
4
5
MyInt operator + (const MyInt& rhs){
  MyInt res(this->v);
  res.v += rhs.v;
  return res;
}
1
Genius Ignat
1237 / 775 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
21.02.2010, 22:22 #3
Ни чего сложного:
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
Sergey_s
1 / 1 / 0
Регистрация: 21.02.2010
Сообщений: 5
21.02.2010, 22:25  [ТС] #4
Спасибо всем большое.
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
21.02.2010, 22:54 #5
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
Domino's
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 10
22.02.2010, 01:26 #6
Помогите пожалуйста)))))
Сама особо не понимаю....Да еще и тема такая не женская))))..трудная для меня то есть))))

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

И вот конкретное задание
АДТ − стек. Дополнительно перегрузить следующие операции:
- «+» − добавить элемент в стек;
- «-» − извлечь элемент из стека;
- «bool()» − проверка, пустой ли стек.
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
22.02.2010, 10:00 #7
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
Domino's
0 / 0 / 0
Регистрация: 27.12.2009
Сообщений: 10
15.03.2010, 00:00 #8
ПОМОГИТЕ ПЛИИЗ....

Создать класс матриц, содержащий ссылку на unsigned long, число строк и столбцов и состояние ошибки. Определить конструкторы по умолчанию, конструктор с одним и с двумя параметрами, конструктор копирования, деструктор. Определить операторы =, +, -, +=, -=, *., *= с объектами этого класс, с unsigned long и с вектором, определенном в задании 10. Определить оператор [] так, чтобы обращение [][] к элементам имело смысл, аналогичный встроенному. Перегрузить операторы вывода и ввода в поток.
0
15.03.2010, 00:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2010, 00:00
Привет! Вот еще темы с ответами:

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

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

Перегрузить операции - C++
Здравствуйте! Есть уже готовая программа , но в ней нужно перегрузить операции + добавление элемента; - удаление элемента; ...

перегрузить функции - C++
можно ли как нибудь функцию перегрузить вне класса. На сколько я знаю перегружают в классе. а функция то-вывода...толи массива толи...


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

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

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