
- •Р. Лафоре
- •Глава 1. Общие сведения 32
- •Глава 3. Циклы и ветвления 92
- •Глава 4. Структуры 142
- •Глава 5. Функции 168
- •Глава 6. Объекты и классы 217
- •Глава 7. Массивы и строки 261
- •Глава 8. Перегрузка операций 312
- •Глава 9. Наследование 361
- •Глава 10. Указатели 411
- •Глава 11. Виртуальные функции 476
- •Глава 12. Потоки и файлы 536
- •Глава 13. Многофайловые программы 596
- •Глава 14. Шаблоны и исключения 640
- •Глава 15. Стандартная библиотека шаблонов (stl) 681
- •Глава 16. Разработка объектно-ориентированного по 752
- •Глава 1 «Общие сведения» включает список тем, касающихся uml, с указа- нием их расположения в книге.
- •Глава 1
- •Глава 2
- •Глава 3
- •If внутри циклов
- •If и else во вложенных ветвлениях
- •Глава 4
- •Глава 5 Функции
- •Глава 6
- •Глава 7
- •123456. Россия
- •123456. Россия
- •Глава 8
- •Глава 9
- •Глава 10 Указатели
- •Main() передает адрес переменной var в ptrd в centimize()
- •Centimize() использует этот адрес для доступа к var
- •Глава 11
- •Глава 12
- •Тип:менеджер Фамилия: Александров Номер:1111
- •Тип:Ученый Фамилия: Лебедев Номер:2222
- •Тип:рабочий Фамилия:Шевелев Номер:3333
- •Глава 13
- •Глава 14
- •Много объектов разных классов в памяти Рис. 14.2. Шаблон класса
- •Алгоритмы используют итераторы для работы с объектами контейнеров. Рис. 15.1. Контейнеры, алгоритмы и итераторы
- •Глава 16
- •Глава 1
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10 Ответы на вопросы
- •Глава 11
- •Глава 12 Ответы на вопросы
- •Глава 13 Ответы на вопросы
- •Глава 14 Ответы на вопросы
- •Глава 15 Ответы на вопросы
- •Глава 16
return
dd1;
//
вернуть наибольшее
else
//
дюймы или dd2,
если равные значения
return
dd2;
}
//---------------------------------------------------------
//
engldisp()
//
выводит структуру типа Distance
в футах и дюймах
void
engldisp(Distance dd)
{
cout
<< dd.feet << "\'-"
<<
dd.inches <<
"\"";
}
Ответы
на вопросы
Объявление
класса описывает, как будут выглядеть
объекты после их соз-
дания.
Класс,
объекту.
в.
Правильный
ответ:
class
leverage
{
private:
int
crowbar;
publiс:
void
pry();
};
Ложно;
и данные, и функции могут быть как
скрытыми, так и общедо-
ступными.
Правильный
ответ:
leverage
lever1;
г.
Правильный
ответ:
lever1.
pry();
inline
(также
и
private),
int
getcrow().
Правильный
ответ:
{
return
crowbar;
}
Создания
(определения).
Класса,
методом которого он является.
Правильный
ответ:
leverage()
{
crowbar
=
0; }
Истинно.
а.Глава 6
Правильный
ответ:
int
getcrow();
int
leverage::getcrow()
Правильный
ответ:
{
return
crowbar;
}
Методы
и данные по умолчанию являются скрытыми
в классах, но обще-
доступными в
структурах.
Три,
один.
Вызову
одного из его методов.
б,
в, г.
Ложно;
попытки, пусть ошибочные, бывают
необходимы.
г. -
Истинно.
Правильный
ответ:
void
aFunc(const
float
jerry)const;
Решения
упражнений
1.
Верное решение:
//
ex6_1.cpp
//
использование класса для демонстрации
целочисленного типа
#include
<iostream>
using
namespace std;
///////////////////////////////////////////////////////////
class
Int //
(не то же самое, что int)
{
private:
int
i;
public:
Int()
//
создание Int
{
i = 0; }
Int(int
ii) //
создание и инициализация Int
{
i = ii; }
void
add(Int i2, Int i3)//
складывает два значения типа Int
{
i = i2.i +i3.i; }
void
display() //
вывести Int
{
cout
<< i; }
};
///////////////////////////////////////////////////////////
int
main()
{
Int
Int1(7); //
создать и инициализировать Int
Int
Int2(11); //
создать и инициализировать Int
Int
Int3; //
создать Int
Int3.add(Int1,
Int2); //
сложение двух переменных типа Int
cout
<< "\nInt3
=";
Int3.display(); //
вывести результат
cout
<< endl;
return
0;
}
Верное
решение:
//
ex6_2.cpp
//
использование класса для моделирования
автоматического турникета
#include
<iostream>
using
namespace std;
#include
<conio.h>
const
char
ESC = 27; //
Код клавиши «Esc»
const
double
TOLL
= 0.5; //
пошлина равна 50 центами
///////////////////////////////////////////////////////////
class
tollBooth
{
private:
unsigned
int
totalCars; //
всего машин за день
double
totalCash;
//
всего денег за день
public:
//
конструктор
tollBooth()
: totalCars(0), totalCash(0.0)
{
}
void
payingCar() //
а car paid
{
totalCars++; totalCash += TOLL; }
void
nopayCar() //
а car didn 't pay
{
totalCars++; }
void
display()const
//
display totals
{
cout
<< "\nМашины:
"
<< totalCars
<<
",
Деньги: "
<< totalCash
<<
endl;
}
};
///////////////////////////////////////////////////////////
int
main()
{
tollBooth
booth1; //
создает турникет
char
ch;
cout
<< "\nНажмите
0 для машины без оплаты, "
<<
"\n
1 для каждой оплачивающей машины, "
<<
"\n
Esc
для выхода.\n
";
do
{
ch
= getche();
//
получить символ
if(ch
== '0')
//
если это 0, машина не оплачивала
booth1.nopayCar();
if(ch
== '1')
//
если 1, машина оплачивала
booth1.payingCar();
}
while(ch
!= ESC);
//
выход из цикла по Esc
booth1.display();
//
вывод отчета
return
0;
}
Верное
решение:
//
ex6_3.cpp
//
Использование класса для демонстрации
класса «время»
#include
<iostream>
using
namespace std;
///////////////////////////////////////////////////////////
class
time
{
private:
int
hrs, mins, secs;
public:
time():
hrs(0),
mins(0),
secs(0)
//
конструктор без аргументов