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

Объясните как прочесть это? operator>> - C++

Восстановить пароль Регистрация
 
iNarek94
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 9
10.08.2015, 22:54     Объясните как прочесть это? operator>> #1
Я только-только начинаю осваивать язык C++, все время возникают вопросы, ответы на которых я кое-как нахожу в пространстве инета. Во многих местах встречал подобие сией строки, каждый раз затрудняюсь в чтении. Приведу пример из заголовочного файла istream

C++
1
inline istream& istream::operator>>(unsigned char * _s) { return operator>>((char *)_s); }


inline - объявление простой функции
& - амперсанд, используется при адресации, но я только использовал в виде &variable, где variable какая-нибудь переменная, и &variable есть адресс этой переменной. Но что такое istream&?
:: - унарная операция, используется при перегрузке, т.е. тут вызывается оператор >> из istream?
char * - указатель на строку, я так понимаю s и есть эта строка, а что такое _s?
Ну и внутренность функции тоже не понимаю, что значит возвращение operator>>((char *)_s)?

Если хотя бы на этом примере кто-нибудь объяснит что да как, буду очень благодарен
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2015, 22:54     Объясните как прочесть это? operator>>
Посмотрите здесь:

C++ объясните грамотно как это работает
C++ объясните как это работает
C++ Заголовочный фаил <algorithm> (объясните что это такое)
operator char() или operator int() C++
объясните пожалуйста, что это C++
operator+ как член класса C++
Связанный список. Как это делается и зачем это нужно? C++
C++ Как прочесть несуществующую память?
Реализация operator + через operator += C++
Как прочесть из exe ресурс - bitmap C++
Выполнение операции через получение комбинации символов? Объясните, как это сделано C++
C++ Объясните, на что ругается компилятор, и как это понимать?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
10.08.2015, 23:05     Объясните как прочесть это? operator>> #2
Цитата Сообщение от iNarek94 Посмотреть сообщение
& - амперсанд, используется при адресации, но я только использовал в виде &variable, где variable какая-нибудь переменная, и &variable есть адресс этой переменной. Но что такое istream&?
Это ссылка.
Цитата Сообщение от iNarek94 Посмотреть сообщение
:: - унарная операция, используется при перегрузке, т.е. тут вызывается оператор >> из istream?
Оператор :: с перегрузкой никак не связан. Смотри, например тут Что означает двойное двоеточие в vector<int>::iterator it ?
И operator>> здесь не вызывается, определяется (вызваться он будет внутри определения и с другим типом параметра).
Цитата Сообщение от iNarek94 Посмотреть сообщение
char * - указатель на строку, я так понимаю s и есть эта строка, а что такое _s?
Я не вижу здесь у тебя s, только _s. О каком s речь?
Цитата Сообщение от iNarek94 Посмотреть сообщение
что значит возвращение operator>>((char *)_s)?
Вызвать operator>> в параметром типа char* и вернуть ее результат.
iNarek94
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 9
10.08.2015, 23:23  [ТС]     Объясните как прочесть это? operator>> #3
Цитата Сообщение от Velesthau
Это ссылка.
На что отсылается istream&? И почему так пишется?
Цитата Сообщение от Velesthau
Я не вижу здесь у тебя s, только _s. О каком s речь?
А зачем черточка снизу?

И про оператора тоже не очень понял Зачем двойное двоеточие? Это объект класса или что?
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
10.08.2015, 23:49     Объясните как прочесть это? operator>> #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от iNarek94 Посмотреть сообщение
На что отсылается istream&?
istream тут ни на что не ссылается, это тип возвращаемого значения. Ссылка на istream.
Цитата Сообщение от iNarek94 Посмотреть сообщение
И почему так пишется?
Странный вопрос... Потому что у С++ такой синтаксис.
Цитата Сообщение от iNarek94 Посмотреть сообщение
А зачем черточка снизу?
Просто там у тебя в библиотеке такой принятый стиль именования.
Цитата Сообщение от iNarek94 Посмотреть сообщение
Зачем двойное двоеточие?
Чтобы указать, что operator>> является функцией-членом класса istream.

Добавлено через 3 минуты
Цитата Сообщение от iNarek94 Посмотреть сообщение
Я только-только начинаю осваивать язык C++
Так ты б сначала прочитал все полностью, а потом уже смотрел библиотеку стандартную. И уже вопросы задавал после того, как прочитал что есть ссылки, операторы разрешения области видимости, приведения типов, перегрузку операторов. А то сначала подорвусь на мине, а потом прочитаю, как ей пользоваться.
iNarek94
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 9
11.08.2015, 00:19  [ТС]     Объясните как прочесть это? operator>> #5
Velesthau, Спасибо большое, многое внятно объяснил. Я читал по Дейтелу, главы 1-5,16,14. Вопросы начали появлятся сегодня, в конце 14-ой, при произвольном чтении/записи данных. Все ответы на мои вопросы оказались в 6-8 главах, пойду читать.
Yandex
Объявления
11.08.2015, 00:19     Объясните как прочесть это? operator>>
Ответ Создать тему
Опции темы

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