Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Самоучитель С++ - Шилдт Г.

Шилдт Г. Самоучитель С++ — Спб.: БВХ-Петербург, 2003. — 688 c.
ISBN 5-7791-0086-1
Скачать (прямая ссылка): samouchitelc2003.djvu
Предыдущая << 1 .. 153 154 155 156 157 158 < 159 > 160 161 162 163 164 165 .. 206 >> Следующая

pr2() { printing =0; }
void set__print (int status) { printing = status; } //...
friend int inuse {prl ol, pr2 o2) ;
};
// Возвращает истину при занятом принтере int inuse(prl ol, pr2 o2)
{
if(ol.printing I I o2,printing) return 1; else return 0;
1
int main(} f
prl pi; pr2 p2;
if([inuse(plr p2) ) cout << "Принтер свободен\пм;
cout << "Установка для; печати принтера pi ¦ - Лп”; pi.set_print (1) ;
if(inuse(pi, p2)) cout << "Теперь принтер занятЛп11;
cout << "Отклонение принтера pi ... \n"; pl*set_print(0);
if (!inuse(pl, p2) } cout « "Принтер свободен\п";
Приложение В. Ответы на вопросы и решения упражнений_______________________507
cout « "Подключение принтера р2 . . Р \п"; р2*set_print(1);
¦ if{inuse(plr р2) > cout << "Теперь принтер занят\п"; return 0;
Проверка усвоения материала главы 3
1. Для того чтобы присвоить один объект другому, необходимо, чтобы тип обоих объектов был одинаков.
2. Присваивать оЫ и оЬ2 неправильно, так как память, на которую в начале указывал указатель р объекта оЬ2> теряется, поскольку это значение указателя р при присваивании переписывается. Таким образом, такую память становится невозможно освободить, и наоборот, память, на которую в начале указывал указатель р объекта obi, при удалении этого объекта освобождается дважды, что может привести к повреждению системы динамического выделения памяти.
3. int light (planet Р)
{
return p.get_miles() / 186000;
)
4. Да.
5. // Загрузка алфавита в стек #include <iostream>
using namespace std;
#define size 27
// Объявление класса stack для символов class stack {
char stck[SIZE); // содержит стек int tos; // индекс вершины стека
public:
stack (); // конструктор
¦ void push (char ch) ; // помещает символ в стек
char pop () ; // выталкивает символ из стека
V .
J і
/ / Инициализация стека stack: :stack ()
{
¦cout << "Работа конструктора стека \п";
508
tos = 0;
}
/ / Запись символа в стек void stack: :push (char ch)
(
if (tos==SISE) {
cout << "Стек полон \n1f; return;
}
stckftos] = ch; tos++;
I
// Выталкивание символа из стека char stack: :pop()
{
if (tO5==0) {
cout « "Стек пуст \n";
return 0; // возврат нуля при пустом стеке
I
tos--;
return stckftos];
)
void showstack(stacko) ; stack loadstackO;
int main()
I
stack si;
si = loadstackO ; showstack{si) ;
return 0;
j
// Вывод на экран содержимого стека void showstack(stack о)
{
char с;
// когда выполнение этой инструкции завершится, while (с=о.рор () ) cout « с « т'\п”; cout « "\п";
\
II Загрузка стека символами алфавита stack loadstackO
Самоучитель C++
стек о опустеет
Приложение В. Ответы на вопросы и решения упражнений_____________________509
(
stack t; char с;
for(c='af; с<-'z' ? C++) t.push(c); return t;
}
6. При передаче объекта функции в качестве аргумента и при возвращении объекта из функции в качестве возвращаемого значения, создается временный объект, который удаляется при завершении работы функции. При удалении временного объекта деструктор может удалить в программе нечто такое, что может еще пригодиться.
7. Дружественная функция — это функция, не являющаяся членом класса, но обеспечивающая доступ к закрытой части класса, для которого она дружественна. Еще раз, дружественная функция имеет доступ к закрытой части класса, для которого она дружественна, но не является членом этого класса.
Проверка усвоения материала в целом
1. // Загрузка алфавита в стек finclude <iastream>
#include <cctype> using namespace std;
#define SIZE 27
// Объявление класса stack для символов class stack {
char stck[SIZE]; // содержит стек int tos; // индекс вершины стека public:
stack(}; //конструктор
void push(char ch) ; // помещает символ в стек char pop () ; // выталкивает символ из стека
};
// Инициализация стека stack: ; stackO
{
cout << "Работа конструктора стека \п,г; tos = 0;
// Загшсь символа в стек void stack: : push (charch)
510
if (tos==SIZE) {
cout << "Стек полон \n"; return;
}
stck[tos] = ch; tos++;
}
/ / Выталкивание символа из стека char stack: :pop()
{ ¦
if (tos—0) {
cout << "Стек гг/ст \n";
return 0; // возврат нуля при гг/стом стеке
)
tos—;
return stck[tos];
}
void showstack (stacko} ; stack loadstack ();
stack loadstack(int upper);
int mainO
{
stack si, s2, s3;
si = loadstack(}; showstack(si);
// используется верхний регистр s2 = loadstack(1) ; showstack(s2);
// используется нижний регистр s3 = loadstack(0) ; showstack(s3);
return 0;
f
// Вывод на экран содержимого Отека void showstack (stack о)
{
char с;
// когда выполнение этой инструкции завершится, while (c^o.pop (j ) cout « с « "\п";
Предыдущая << 1 .. 153 154 155 156 157 158 < 159 > 160 161 162 163 164 165 .. 206 >> Следующая