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

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

Войти
Регистрация
Восстановить пароль
 
Borkot
 Аватар для Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 183
Записей в блоге: 1
#1

Перегрузка оператора.Почему так происходит? - C++

17.01.2013, 00:08. Просмотров 268. Ответов 3
Метки нет (Все метки)

У нас есть перегрузка оператора.
C++
1
2
3
4
5
6
Digit operator-(const Digit &N)
    {
        Digit temp;
        temp.dig=dig-N.dig;
        return temp;
    }
Так почему когда мы передаем в функцию только один адрес,у нас функция при вычислении А-В знает значение А,Не совсем понятно мы передали один адрес В,Откуда она знает о значении А?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 00:08     Перегрузка оператора.Почему так происходит?
Посмотрите здесь:

C++ Перегрузка оператора >
C++ Почему так происходит и как это устранить
Перегрузка оператора [] C++
потоки почему так происходит ? C++
Перегрузка оператора ~ C++
Перегрузка оператора << C++
C++ Перегрузка оператора + и =
too few arguments to function. почему так происходит? C++
C++ Указатели: почему так происходит? Постфиксный и префиксный инкремент
C++ Перегрузка операторов - Оба случая работают правильно, почему так?
C++ Перегрузка оператора =
Перегрузка оператора C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
 Аватар для Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
17.01.2013, 00:18     Перегрузка оператора.Почему так происходит? #2
А описание оператора находится в классе я так понимаю?

Добавлено через 5 минут
Если находится внутри класса, то в метод класса при его вызове неявно передаётся указатель this, это указатель на тот объект который вызывает данный метод, и мы как бы вычитаем из объекта который вызывает данный метод, другой объект того-же типа( или приводимого к данному типу).
Ваша запись и моя эквиволентны. (*this)-это и есть тот второй объект А
C++
1
2
3
4
5
6
Digit operator-(const Digit &N)
    {
        Digit temp;
        temp.dig=(*this).dig-N.dig;
        return temp;
    }
Есть фнукциональная запись вызова этого метода
A-B; или A.operator-(B); две одинаковые записи.
Borkot
 Аватар для Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 183
Записей в блоге: 1
17.01.2013, 10:13  [ТС]     Перегрузка оператора.Почему так происходит? #3
да описания находятся в классе.Спасибо!

Добавлено через 3 минуты
Да я тоже смотрел,по output выходным данным,там тоже встречался указатель *this, Я так и подозревал что это именно он,но это только подозрения.)))

Добавлено через 1 минуту
Хорошо а если вне класса описание.Я так понимаю прототипы в классе, а в .срр файле описание,там по другому?
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
17.01.2013, 10:32     Перегрузка оператора.Почему так происходит? #4
если в cpp то то же самое, можно без this
C++
1
2
3
4
5
6
Digit Digit::operator-(const Digit &N)
    {
        Digit temp;
        temp.dig=dig-N.dig;
        return temp;
    }
Yandex
Объявления
17.01.2013, 10:32     Перегрузка оператора.Почему так происходит?
Ответ Создать тему
Опции темы

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