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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Имитация нажатия клавиш С/С++ http://www.cyberforum.ru/cpp-beginners/thread161154.html
Задача такая: Программа должна имитировать нажатие клавиш в фоновом режиме. То-есть она должна нажимать заранее заданные кнопки(кнопку), с определенной периодичностью. Что-то вроде бота. Каким способом это реализовать ? (на С или на С++ разницы нет, главное что бы работало) Добавлено через 33 минуты Вопрос решил, тему можно закрыть.
C++ Алгоритм Кнута-Морриса-Пратта здравствуйте. можете объяснить по примеру алгоритм кнута-морриса-пратта http://www.cyberforum.ru/cpp-beginners/thread161153.html
C++ Включение поддержки C99 в CodeBlocks
Здравствуйте! Нужно написать прогу на C (без плюсов, желательно чтоб стандарт С99). Пишу в C::B. Эта сволочь мне выдает: use option -std=c99 or -std=gnu99 to compile your code. (использую gcc) Я и сам знаю, что нужно использовать опцию, но как её включить в C::B? В меню Settings > Compiler and debugger только опции g++. Помогите пжалста, надоело компилить в консоли.
C++ считывание строки
ввело в ступор... как считать строку без применения стринга..ну т.е.: char a; cin >> a; как мне теперь считать строку...какой функцией
C++ Перевод стандартных потоков ввода/вывода в файлы http://www.cyberforum.ru/cpp-beginners/thread161143.html
Интересует сея возможность.. Знаю про freopen с С файлами, но вот интересна такая возможность в С++. В книгах и сети написано типа такого: ofstream ofs; // открыли файл if(ofs) { cout=ofs; } Вполне неплохо. Но у меня так работать не хочет. Пробовал разными способами.
C++ Конкатенация строк Имеется две строки string1 и string2, мне нужно что бы строка string3 содержала в себе обе, сначало string1, потом string2. Kак это сделать на С? подробнее

Показать сообщение отдельно
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206
23.08.2010, 23:35     Перегрузка бинарных операций
Привет! Начал изучать перегрузку операций. В отступление хочется сказать, что это очень увлекательно и интересно. Но в моей книге, есть один момент, который я не понял. Вернее понял, но не до конца.

Итак, что диктует книга:
Существует правило: объект, стоящий с левой стороны операции, вызывает функцию оператора. Объект, стоящий справа от знака операции, должен быть передан в функцию в качестве аргумента. Операция возвращает значение, которое мы затем используем для своих нужд.
Поясню что ясно, а что нет.
в классе определяем перегрузку операции:
C++
1
Distance operator+(Distance) const;
Затем инициализируем ее:
C++
1
2
3
4
5
6
7
8
9
10
11
Distance Distance::operator+(Distance d2) const
{
   int f = feet + d2.feet;
   float i = inches + d2.inches;
   if (i>=12.0)
   {
      i-=12.0;
      f++;
   }
   return Distance (f,i);
}
Итак если мы теперь в main() попросим сделать так:
C++
1
dist3 = dist1+dist2;
то операнд стоящий слева от бинарной операции (читаем dist1), будет вызывающим и автоматом попадет в feet и inches класса Distance, а правый операнд (dist2) будет передан в качестве аргумента в функцию operator+(). С этим все ясно и понятно.

Объясните пожалуйста, как в таком случае работает
C++
1
dist4=dist1+dist2+dist3
?
В книге об этом умолчали, а я догнать никак не могу.
Предположу:
Сначала в operator+() поступают dist1 как вызывающая и dist2 как параметр. Потом, когда все посчитано, сумма этих объектов по умолчанию попадает в operator+() как вызывающая а dist3 как параметр, не? )
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru