6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
1

Как понять данный кусок кода

29.08.2012, 21:48. Показов 645. Ответов 4
Метки нет (Все метки)

Имеется некий абстрактный класс. от него имеется производный класс
Задание работа с данными(чтение из файла, запись в файл) средствами Си и С++
Имеется кусок когда, помогите пожалуйста разобрать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Plate: public AbstractPlate
{
public:
// Конструктор класса.
Plate(){}
// Перегрузки операций помещения в поток и выборки из потока.
// Для ввода в файл.
friend ofstream &operator << ( ofstream &outf, Plate MyPlate )
{
outf << endl << MyPlate.Name << " " << MyPlate.Result;
return outf;
};
// Для чтения из файла.
friend ifstream &operator >> ( ifstream &inf, Plate &MyPlate )
{
inf >> MyPlate.Name >> MyPlate.Result;
return inf;
}
// Для вывода на экран.
friend ostream &operator << ( ostream &out, Plate MyPlate )
{
cout << endl << " ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДґ"
<< endl << " і" << setiosflags( ios::left) << setw( 22 ) << MyPlate.Name
<< "і " << setw( 2 ) << MyPlate.Result[ 0 ] << "і " << setw( 2 ) << MyPlate.Result[ 1 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 2 ] << "і " << setw( 2 ) << MyPlate.Result[ 3 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 4 ] << "і " << setw( 2 ) << MyPlate.Result[ 5 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 6 ] << "і " << setw( 2 ) << MyPlate.Result[ 7 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 8 ] << "і " << setw( 2 ) << MyPlate.Result[ 9 ]
<< "і ";
return out;
};
не ясно именно операторы перегрузки, для потоков вывода и ввода перегрузка имеет такой вид? просто я только умею работать с обычными операциями(+,-,/,*)
Так же не ясно вот эта часть:
C++
1
2
3
4
5
6
7
8
9
10
11
friend ostream &operator << ( ostream &out, Plate MyPlate )
{
cout << endl << " ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДґ"
<< endl << " і" << setiosflags( ios::left) << setw( 22 ) << MyPlate.Name
<< "і " << setw( 2 ) << MyPlate.Result[ 0 ] << "і " << setw( 2 ) << MyPlate.Result[ 1 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 2 ] << "і " << setw( 2 ) << MyPlate.Result[ 3 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 4 ] << "і " << setw( 2 ) << MyPlate.Result[ 5 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 6 ] << "і " << setw( 2 ) << MyPlate.Result[ 7 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 8 ] << "і " << setw( 2 ) << MyPlate.Result[ 9 ]
<< "і ";
return out;
Всем заранее огромное спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2012, 21:48
Ответы с готовыми решениями:

Как по лучше переписать данный кусок кода
FILE* f; int fileSize = 0; f = fopen(&quot;zz.txt&quot;,&quot;r&quot;); char buf; fseek(f, 0, SEEK_END); rewind(f);...

Как можно сделать данный кусок кода меньше и проще?
Задние: Заменить все элементы с четными номерами на значение второго положительного элемента...

Как понять этот кусок программы?
как понять этот кусок программы? Если что, то вот условие задачи. Написать программу для получения...

Как понять кусок кода и как лучше пользоваться документацией ?
Здравствуйте! Помогите понять кусок кода, пожалуйста с привязкой к msdn (как ей правильно...

4
106 / 106 / 9
Регистрация: 02.06.2009
Сообщений: 578
29.08.2012, 22:49 2
А что конкретно непонятно здесь?

Добавлено через 8 минут
Простите, недочитал пост.
0
6 / 6 / 1
Регистрация: 30.03.2012
Сообщений: 111
29.08.2012, 23:25  [ТС] 3
Veyron, так же есть вопрос там после объявлении дружественный функции и инициализации после {} ставиться знак ; а почему? разве его не надо ставить в самом конце класса?
0
В астрале
Эксперт С++
8035 / 4792 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.08.2012, 00:01 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
friend ostream &operator << ( ostream &out, Plate MyPlate )
{
cout << endl << " ГДДДДДДДДДДДДДДДДДДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДґ"
<< endl << " і" << setiosflags( ios::left) << setw( 22 ) << MyPlate.Name
<< "і " << setw( 2 ) << MyPlate.Result[ 0 ] << "і " << setw( 2 ) << MyPlate.Result[ 1 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 2 ] << "і " << setw( 2 ) << MyPlate.Result[ 3 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 4 ] << "і " << setw( 2 ) << MyPlate.Result[ 5 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 6 ] << "і " << setw( 2 ) << MyPlate.Result[ 7 ]
<< "і " << setw( 2 ) << MyPlate.Result[ 8 ] << "і " << setw( 2 ) << MyPlate.Result[ 9 ]
<< "і ";
return out;
};
Без точки с запятой будет тоже прекрасно компилироваться. Видимо класс закрывается где-то дальше.
0
106 / 106 / 9
Регистрация: 02.06.2009
Сообщений: 578
30.08.2012, 00:12 5
О перегрузке операций вывода: Что конкретно непонятно?
В общих чертах:
1. так как метод объявлен как дружественный, то придется указывать имя первого операнда - потока (естественно мы не можем использовать внутренний метод для ofstream/ostream - реализации этих классов как бы закрыты для нас).
2. перегрузка возвращает ссылку на поток, который был операндом - это чтобы можно было делать вот так:
C++
1
cout << 'a' << 'b' << endl;
если бы метод не возвращал данного значения, или возвращал бы другой - не было бы так прикольно - нельзя было бы писать в одну строку вывод целой поэмы.
На самом деле операторы вывода всегда возвращают ссылку на поток, просто оно нам и не надо - нужно только для того, чтобы сразу в одной строке вывести такую вещь. Однако в перегрузке об этом забывать не стоит.
Вообще лучше почитать умную книжку (рекомендовал бы Страуструпа) - там это освещено более подробно и разносторонне.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2012, 00:12

Что делает данный кусок кода?
void f(){ int* x = malloc(10 * sizeof(int)); x = 0; } Препод сказал, что 10 вне...

Для чего данный кусок кода?
Есть код, для чего в нем используется document.layers? Как я понимаю, эта запись использовалась для...

Что делает данный кусок кода -?
class CacheAdapter { protected $mcache = null; protected $mcacheHost = null; protected...

Что делает данный кусок кода?
void control() { int i_input; i_input=0; i_input = getch(); switch (i_input)...


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

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

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