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

Переопределить знаки - C++

Восстановить пароль Регистрация
 
verccety
-1 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 20
10.05.2011, 16:56     Переопределить знаки #1
Задание на C++. Дан класс любой, в нем нужно переопределить операторы `>` и `+=` . Можете показать как делать на примере? И что подуразомевают под "переопределением" ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
10.05.2011, 16:58     Переопределить знаки #2
Открой любую книжку по С++, там есть ответ на вой вопрос.
verccety
-1 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 20
10.05.2011, 17:01  [ТС]     Переопределить знаки #3
Открыл бы, если бы не инет с телефона )
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.05.2011, 17:05     Переопределить знаки #4
Что значит "любой класс"? Как (с чисто логической точки зрения) вы переопределите эти операции в, скажем, классе "Студент"?
verccety
-1 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 20
10.05.2011, 17:09  [ТС]     Переопределить знаки #5
У меня класс допустим Age с объектами год,день,месяц.

в нем есть методы:
вывод,ввод, показ объекта полностью днях
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.05.2011, 17:40     Переопределить знаки #6
verccety, ну вот, для примера...

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
#include <iostream>
 
class Foo
{
public:
    Foo(int foo = 0):
    m_foo(foo)
    {
    }
 
    void set_foo(int foo)
    {
        m_foo = foo;
    }
 
    int get_foo() const
    {
        return m_foo;
    }
 
    bool operator>(const Foo &right) const
    {
        return m_foo > right.m_foo;
    }
 
    Foo &operator+=(const Foo &right)
    {
        m_foo += right.m_foo;
 
        return *this;
    }
 
private:
    int m_foo;
};
 
int main()
{
    Foo bar1(3), bar2(5);
 
    std::cout << (bar1 > bar2) << std::endl;
 
    bar1 += bar2;
 
    std::cout << bar1.get_foo() << std::endl;
 
    return 0;
}
verccety
-1 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 20
10.05.2011, 17:42  [ТС]     Переопределить знаки #7
silent_1991, можешь добавить комментарии?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2011, 17:56     Переопределить знаки
Еще ссылки по теме:

C++ как переопределить << у cout
C++ Как переопределить функцию func2 в классе B
C++ Как переопределить оператор ++ типа char?

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
10.05.2011, 17:56     Переопределить знаки #8
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
#include <iostream>
 
// Класс Foo
class Foo
{
public:
    // Конструктор
    Foo(int foo = 0):
    m_foo(foo) // Инициализируем поле m_foo
    {
    }
 
    // Установка нового значения поля m_foo
    void set_foo(int foo)
    {
        m_foo = foo;
    }
 
    // Получение актуального значения m_foo
    int get_foo() const
    {
        return m_foo;
    }
 
    // Перегрузка оператора ">"
    // Принимается пара экземпляров класса Foo
    // Возвращается значение типа bool
    bool operator>(const Foo &right) const
    {
        // Сравниваются на самом деле поля m_foo переданнх экземпляров
        return m_foo > right.m_foo;
    }
 
    // Перегрузка оператора "+="
    // Принимается пара экземпляров класса Foo
    // Возвращается ссылка на левый (изменяемый) операнд
    Foo &operator+=(const Foo &right)
    {
        // К значению поля m_foo левого операнда добавляется значение того же
        // поля правого операнда
        m_foo += right.m_foo;
 
        // Возвращаем ссылку на себя (левый, изменяемый операнд)
        return *this;
    }
 
private:
    int m_foo;
};
 
int main()
{
    // Создаём пару экземпляров класса Foo
    Foo bar1(3), bar2(5);
 
    // Проверяем работу оператора сравнения
    std::cout << (bar1 > bar2) << std::endl;
 
    // Проверяем работу оператора присваивания
    bar1 += bar2;
 
    std::cout << bar1.get_foo() << std::endl;
 
    return 0;
}
Yandex
Объявления
10.05.2011, 17:56     Переопределить знаки
Ответ Создать тему
Опции темы

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