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

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

Восстановить пароль Регистрация
 
Рома!-!
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 5
23.05.2014, 21:08     Перегрузка операторов #1
Помогите, пожалуйста, решить задачу

При создании собственных типов данных с помощью классов наиболее общей операцией является проверка на равенство экземпляров класса. Используя перегрузку, необходимо перегрузить операторы равенства (==), неравенства (!=). Необходимо добавить новый оператор в класс String, который проверяет, равны ли два экземпляров класса String, т.е. проверить, содержат ли строковые объекты одинаковые строки, как показано ниже:

if (some_string == another_string)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2014, 21:08     Перегрузка операторов
Посмотрите здесь:

Перегрузка операторов C++
Перегрузка операторов C++
C++ Перегрузка операторов
Перегрузка операторов С++ C++
C++ перегрузка операторов
Перегрузка операторов C++
Перегрузка операторов с++ C++
Перегрузка операторов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tenzor
5 / 5 / 9
Регистрация: 21.05.2014
Сообщений: 29
24.05.2014, 00:56     Перегрузка операторов #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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
using namespace std;
 
// Создаем класс товаров
class String {
    // Описываем поле класса (указатель на строку)
    private:
        char* str;
        
    // Описываем интерфейс класса
    public:
        // Конструктор по умолчанию
        String() {
            str = "";
        }
        
        // Конструктор с параметрами (передаем указатель на строку)
        String(char* str) {
            this->str = str;
        }
        
        // Вычисление размера строки
        int size() {
            return strlen(this->str);
        }
        
        // Оператор сравнения
        bool operator == (String str) {
            if(this->size() != str.size())
                return false;
            int i=0;
            bool flag=true;
            while(this->str[i]!='\0' and str.str[i]!='\0') { 
                if(this->str[i]!=str.str[i]) {
                    flag = false;
                    break;
                }
                i++;
            }
            return flag;
        }
        
        // Оператор неравенства
        bool operator != (String str) {
            return !(*this == str);
        }
        
        // Вывод объекта на экран
        void print() {
            cout << this->str << endl;
        }
};
 
int main() {
    // Создаем две строки
    String str("data");
    String str2("data");
    // Выводим их на экран
    str.print();
    str2.print();
    // Проверяем строки на равенство
    cout << (str == str2) << endl;
    
    // Проверяем строки на неравенство
    cout << (str != str2) << endl;
    return 0;
}
Yandex
Объявления
24.05.2014, 00:56     Перегрузка операторов
Ответ Создать тему
Опции темы

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