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

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

Войти
Регистрация
Восстановить пароль
 
iNarek94
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 13
#1

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

10.08.2015, 22:54. Просмотров 261. Ответов 4
Метки нет (Все метки)

Я только-только начинаю осваивать язык 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)?

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

Объясните, как исправить ошибку invalid operands of types 'double' and 'const char [2]' to binary 'operator - - C++
#include <stdio.h> #include <math.h> #include <iostream> #include <cmath> using namespace std; int main () { double...

объясните как это работает - C++
#include <iostream> #include <algorithm> using namespace std; long func (long * arr, int length) { return...

объясните грамотно как это работает - C++
1)int * arr = NULL; и int * arr = new int;(что означает new) 2)можно менять int * arr = NULL на int * arr = {0} или int * arr = 0

Объясните, на что ругается компилятор, и как это понимать? - C++
Здравствуйте уважаемые форумчане. Изучаю материал "Принципы и практика использования C++" Страуструпа. Остановился на главе "Ошибки". ...

Выполнение операции через получение комбинации символов? Объясните, как это сделано - C++
Полная программа, если нужно. Код нужного log.bat @ECHO OFF PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command "&...

Что это bool operator== (const CLASS&) const; - C++
Что это? class CLASS { public: bool operator== (const CLASS&) const; ...

4
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
10.08.2015, 23:05 #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* и вернуть ее результат.
1
iNarek94
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 13
10.08.2015, 23:23  [ТС] #3
Цитата Сообщение от Velesthau
Это ссылка.
На что отсылается istream&? И почему так пишется?
Цитата Сообщение от Velesthau
Я не вижу здесь у тебя s, только _s. О каком s речь?
А зачем черточка снизу?

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

Добавлено через 3 минуты
Цитата Сообщение от iNarek94 Посмотреть сообщение
Я только-только начинаю осваивать язык C++
Так ты б сначала прочитал все полностью, а потом уже смотрел библиотеку стандартную. И уже вопросы задавал после того, как прочитал что есть ссылки, операторы разрешения области видимости, приведения типов, перегрузку операторов. А то сначала подорвусь на мине, а потом прочитаю, как ей пользоваться.
1
iNarek94
0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 13
11.08.2015, 00:19  [ТС] #5
Velesthau, Спасибо большое, многое внятно объяснил. Я читал по Дейтелу, главы 1-5,16,14. Вопросы начали появлятся сегодня, в конце 14-ой, при произвольном чтении/записи данных. Все ответы на мои вопросы оказались в 6-8 главах, пойду читать.
0
11.08.2015, 00:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2015, 00:19
Привет! Вот еще темы с ответами:

объясните пожалуйста, что это - C++
И что с этим делать)

Class & operator's |Error: undefined reference to operator - C++
Компилирует нормально, но когда хочу использовать оператор выдает ошибку:undefined reference to 'operator..(Fraction const&amp;, Fraction...

Заголовочный фаил <algorithm> (объясните что это такое) - C++
Здравствуйте, товарищи! Что такое #include &lt;algorithm&gt;? Какие она имеет функции или макросы? И если можно их предназначение?

operator char() или operator int() - C++
Здорова госпдо! Снова ничо не ясно как всегда. Разбираю программку из книги Страуструпа, там он описывает класс String в нем есть ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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