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

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

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

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

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

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

потоки почему так происходит ? - C++
Господа делаю воспроизведение основной музыки в программе , а затем в отдельный поток делаю воспроизвеление другого звука , так вот звук...

too few arguments to function. почему так происходит? - C++
всем привет, помогите разобраться с ошибкой #include <stdio.h> #include <stdlib.h> #include <iostream> #include <iomanip.h> ...

Почему так происходит и как это устранить - C++
почему если я напишу вот так - #include <stdio.h> #include <iostream> using namespace std; int main() { ...

Указатели: почему так происходит? Постфиксный и префиксный инкремент - C++
В общем, вот код программы double q; for (int i(0);i<10;i++) { q=i; } cout<<q<<endl; double* d=q; cout<<d<<"...

После 1-го цикла пропускается ввод adres, почему так происходит? - C++
#include<iostream> #include <cstring> using namespace std; struct anketa{ char fio; char adres; double year; ...

Перегрузка операторов - Оба случая работают правильно, почему так? - C++
#include "stdafx.h" #include <iostream> #include "conio.h" #include "windows.h" using namespace::std; class Int{ private: ...

3
Wolkodav
604 / 457 / 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); две одинаковые записи.
2
Borkot
4 / 4 / 0
Регистрация: 05.05.2012
Сообщений: 184
Записей в блоге: 1
17.01.2013, 10:13  [ТС] #3
да описания находятся в классе.Спасибо!

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

Добавлено через 1 минуту
Хорошо а если вне класса описание.Я так понимаю прототипы в классе, а в .срр файле описание,там по другому?
0
UserAK
73 / 73 / 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;
    }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 10:32
Привет! Вот еще темы с ответами:

cannot convert `float' to `float*. Почему так происходит? - C++
всем привет, помогите исправить ошибки... а то голова мало варит уже, а завтра надо сдать уже #include <stdio.h> #include <stdlib.h>...

Сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения - C++
Добрый день уважаемые программисты, хотелось, чтобы вы помогли мне в решении одной задачи, а именно подсказали идею решения. Задача...

Перегрузка оператора << - C++
Добрый пень! подскажите как написать код для реалилизации следующего требования: SpecialPrint &lt;&lt; &quot;text&quot; &lt;&lt; 'a' &lt;&lt; 1; ...

Перегрузка оператора () - C++
Никак не могу разобраться с перерузкой оператора () и в литературе не могу найти доходчивое объяснение: Есть перегрузка оператора () Есть...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
17.01.2013, 10:32
Ответ Создать тему
Опции темы

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