Форум программистов, компьютерный форум CyberForum.ru

Перегрузка оператора == - C++

Восстановить пароль Регистрация
 
Toshka1993
Сообщений: n/a
14.12.2011, 23:39     Перегрузка оператора == #1
нужно сравнить
1) объект класса abc с объектом класса abc1
2) объект класса abc с другим объектом класса abc
3) объект класса abc1 с объектом класса abc
не используя виртуальности

1) и 2) я написала, а над третьим голову ломаю=(
может кто знает, как можно такое сделать?
(пишу в Visual Studio)

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
class abc1
{
public:
int a, b;
 
abc1() { a=0; b=0; }
abc1( int i, int j) { a=i; b=j; }
//  bool operator == (const abc & op1);
};
 
 
class abc
{
public:
int x, y;
 
abc() { x=0; y=0; }
abc( int i, int j) { x=i; y=j; }
abc operator+ (abc op1);
bool operator == (const abc & op1);
bool operator == (const abc1 & op2);
};
 
abc abc:: operator+ (abc op1)
{
abc temp;
temp.x = x + op1.x;
temp.y = y + op1.y;
return temp;
}
 
 
 
 
bool abc :: operator==(const abc & op1) 
{
return x == op1.x && y == op1.y;
}
 
bool abc :: operator==(const abc1 & op2) 
{
return x == op2.a && y == op2.b;
}
 
bool abc :: operator==(const abc1 & op2) 
{
return op2.a == x && op2.b == y;
}
 
void main()
{
abc o1(10,10), o2(5, 3), o3, o4(10, 10);
o3 = o1+o2;
abc1 o5(10, 10);
abc1 o6(4,6);
 
cout <<"o1 + o2 = \n"<< "x = " << o3.x << ", y = " << o3.y <<"\n\n";
 
if(o1 == o2) cout << "o1 ravno o2\n";
else cout << "o1 ne ravno o2\n";
 
if(o1 == o5) cout << "o1 ravno o5\n";
else cout << "o1 ne ravno o5\n";
 
if(o5 == o1) cout << "o5 ravno o1\n";
else cout << "o5 ne ravno o1\n";
 
if(o1 == o6) cout << "o1 ravno o6\n";
else cout << "o1 ne ravno o6\n";
 
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2011, 23:39     Перегрузка оператора ==
Посмотрите здесь:

Перегрузка оператора C++
перегрузка оператора = C++
C++ Перегрузка оператора <<
Перегрузка оператора << C++
C++ Перегрузка оператора + и =
Перегрузка оператора + C++
Перегрузка оператора << C++
Перегрузка оператора -> C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
14.12.2011, 23:51     Перегрузка оператора == #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
class abc;
class abc1;
 
class abc1
 {
 public:
 int a, b;
 
 abc1() { a=0; b=0; }
 abc1( int i, int j) { a=i; b=j; }
 bool operator == (const abc & op1);
 };
 
 class abc
 {
 public:
 int x, y;
 
 abc() { x=0; y=0; }
 abc( int i, int j) { x=i; y=j; }
 abc operator+ (abc op1);
 bool operator == (const abc & op1);
 bool operator == (const abc1 & op2);
 };
 
 // все остальное
Операторы сравнения если они мемберы должны быть константными.
Но еще лучше их сделать в виде свободных ф-й. В вашем примере они даже френдами классов могут не быть. тогда все сравнение abc == abc1 реализуется через сравнение abc1 == abc. Симметрично же должно быть.
Yandex
Объявления
14.12.2011, 23:51     Перегрузка оператора ==
Ответ Создать тему
Опции темы

Текущее время: 13:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru