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

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

Войти
Регистрация
Восстановить пароль
 
Динар Габбасов
Заблокирован
#1

что означает данная строчка? &operator - C++

26.08.2012, 23:56. Просмотров 1186. Ответов 6
Метки нет (Все метки)

что это означает?
(Tabl это класс)
C++
1
friend ofstream &operator << ( ofstream &outf, Tabl MyTabl )
я так понимаю объявляется дружественная функция перегрузки оператора ввода? можете еще объяснить что происходит
C++
1
( ofstream &outf, Tabl MyTabl )
понимаю что создается объект класса Tabl но для чего? что значит ofstream &outf как это все взаимодействует?
Заранее огромное Спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2012, 23:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос что означает данная строчка? &operator (C++):

Что означает данная строчка кода? - C++
#define MASSIZE(x) (sizeof(x)/sizeof(x)) можете пожалуйста объяснить что это значит?

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? - C++
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Что означает строчка ??? - C++
((i+j)%2==0?-1.0:1.0)); Скажите пожалуйста ,что означает эта строчка в С++?

Что означает строчка ??? - C++
Что озночает строчка double *x = new double; Заранее спасибо

Что означает эта строчка? - C++
cout&lt;&lt;MyClass::addn(2)&lt;&lt;endl;

Что означает следующая строчка? - C++
Подскажите пожалуйста, что означает строчка: byte szch; ...//тут запихиваем в szch и szch какие-то цифры short...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.08.2012, 00:04 #2
Цитата Сообщение от Динар Габбасов Посмотреть сообщение
что означает данная строчка? &operator
&(амперсанд) - не относиться к ключевому слову operator, он относиться к ofstream т.е.
ofstream& - а это ссылка ссылка на объект класса ofstream

Добавлено через 39 секунд
Цитата Сообщение от Динар Габбасов Посмотреть сообщение
я так понимаю объявляется дружественная функция перегрузки оператора ввода?
верно, только не ввода, а вывода

Добавлено через 40 секунд
Цитата Сообщение от Динар Габбасов Посмотреть сообщение
можете еще объяснить что происходит
C++
1
( ofstream &outf, Tabl MyTabl )
это параметры функции

Добавлено через 2 минуты
Цитата Сообщение от Динар Габбасов Посмотреть сообщение
как это все взаимодействует?
как это все взаимодействует можно расписывать без конца и края поэтому вам будет лучше обратиться к литературе
1
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
27.08.2012, 00:10 #3
Операторы в Си++ это обычные функции, так что это определение функции.
Не думаю, что следующее определение вызвало бы у тебя подобные вопросы?
C++
1
ofstream& doSomething( ofstream &outf, Tabl MyTabl );
Воспринимай все это в одном ключе.
1
Динар Габбасов
Заблокирован
27.08.2012, 00:28  [ТС] #4
Цитата Сообщение от Динар Габбасов Посмотреть сообщение
ofstream
Jupiter, это же означает посимвольное чтение из файла?
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.08.2012, 08:47 #5
Цитата Сообщение от Динар Габбасов Посмотреть сообщение
friend ofstream &operator << ( ofstream &outf, Tabl MyTabl );
Означает это следующее. Когда компилятор встретит конструкцию типа: слева от << первый параметр (объект типа ofstream, например, cout), а слева объект класса Tabl, то будет использоваться реализация этой дружественной функции. Например:
C++
1
2
Tabl A;
cout << A; // здесь будет использована реализация friend ofstream &operator << ( ofstream &outf, Tabl MyTabl );
Добавлено через 9 минут
Дружественной она сделана для того, чтобы можно было использовать привычную форму записи кода с <<. Если это метод класса, то в нём будет один параметр, который является правым операндом по отношению к <<. Левый операнд сам объект класса, который вызывает этот метод:
C++
1
ofstream &operator << (ofstream &outf);
Тогда код примет необычный вид:
C++
1
2
Tabl A;
 А << cout;
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,927
Записей в блоге: 1
27.08.2012, 08:59 #6
Перегрузка оператора вывода. одни словом что бы можно было использовать cout
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
27.08.2012, 11:38 #7
ofstream это класс потока вывода в файл. Перегружена функция для вывода объекта Tabl. friend спецификатор используется для разрешения данной функции обращаться непосредственно к закрытым членам класса Tabl.

В данном случае не понятно, почему используется копия объекта а не константная ссылка. То есть лучше записать вот так:
C++
1
friend ofstream &operator<<( ofstream &out, const Table &MyTable );
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2012, 11:38
Привет! Вот еще темы с ответами:

Чайник C++, что означает каждая строчка - C++
#pragma hdrstop #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include...

Пожалуйста объясните Что означает каждая строчка - C++
Что означает каждая строчка, объясните кому не трудно, а то ничего не понятно: 1) char *s = new char ; cout&lt;&lt;&quot;Vvedite slovo&quot;&lt;&lt;endl; ...

Нюансы синтаксиса: что означает строчка кода ui->setupUi(this) ? - C++
Добрый день, объясните, пожалуйста на пальцах эту строчку: ui-&gt;setupUi(this) ?

Что означает operator void* - C++
Столкнулся с оператором void* в классе/структуре, решил что это метод который вызывается когда происходит преобразование конкретного типа в...


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

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

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