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

Перегрузка операций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка массива c++ std :: sort() http://www.cyberforum.ru/cpp-beginners/thread1499271.html
Дан двумерный массив символов char M, надо отсортировать его при помощи std :: sort(), построчно, т.е. допустим было 00011 11111 00000 00000 11111 А стало 00000 00000 00011
C++ Как отправить почту через Telnet? Не получается оправка почты через telnet. Пробую mail, yandex не работает. Возможно ли отправить? http://www.cyberforum.ru/cpp-beginners/thread1499247.html
C++ Запомнить, какое число меньше 437, записать его в переменную и больше не изменять. Найти ошибку
Добрый день, решал задачу, нужно было сделать так, чтобы программа запомнила, какое число меньше 437 и записала его в переменную number, а также, чтобы потом уже не перезаписывала его, но почему то...
C++ Код, который проверяет есть ли в регистре идентификатор GUID - как он работает?
Есть код который как бы проверяет есть ли в регистре идентификатор GUID или нет, вот он: hr=HRESULT; CLSID clsid; if ((hr = ::CLSIDFromProgID(L"MyComDll", &clsid)) != NOERROR) { ...
C++ Возврат по ссылке http://www.cyberforum.ru/cpp-beginners/thread1499161.html
Приветствую всех! Есть пример из книги Р. Лафоре "Объекто-ориентированное программирование в C++": #include <iostream> using namespace std; #include <process.h> const int LIMIT = 100;...
C++ Блинная сортировка массива, не сортируется последний элемент Товарищи офицеры. Прошу посмотреть мой код блинной сортировки для одномерного массива. Дело в том что он не сортирует последний элемент. Что ни делал-все напрастно. #include <iostream>... подробнее

Показать сообщение отдельно
DrOffset
7310 / 4406 / 998
Регистрация: 30.01.2014
Сообщений: 7,241
15.07.2015, 15:44
Цитата Сообщение от Nishen Посмотреть сообщение
но что вызвало метод преобразования из класса?
Преобразование и вызвало.

В С++ вообще много какие выражения могут приводить к вызову операторных функций.
Например, при перегрузке оператора * для класса А, и написании в коде
C++
1
2
A a, b;
A c = a * b;
мы получим вызов оператора *. Но явно вызова в коде нигде нет. Выражение a * b означает следующее:
C++
1
A c = operator*(a, b); // или a.operator*(b);
Тут такая же картина. Выражение
C++
1
mtrs = dist2;
потребовало преобразования типов. Компилятор поискал среди доступных для этого класса возможных преобразований и нашел твой оператор float. Он подошел больше других (т.к. он единственный), его и вызвали. Т.е. по сути этот код превратился вот в такое:
C++
1
mtrs = dist2.operator float();
т.е. в обычный вызов функции класса, такая запись тоже будет работать.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru