Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лафоре Р. - Объектно-ориентированное программир...doc
Скачиваний:
0
Добавлен:
01.01.2020
Размер:
40.77 Mб
Скачать

return dd1; // вернуть наибольшее

else // дюймы или dd2, если равные значения

return dd2;

}

//---------------------------------------------------------

// engldisp()

// выводит структуру типа Distance в футах и дюймах

void engldisp(Distance dd)

{

cout << dd.feet << "\'-" << dd.inches << "\"";

}

Глава 6

Ответы на вопросы

      1. Объявление класса описывает, как будут выглядеть объекты после их соз- дания.

      2. Класс, объекту.

      3. в.

      4. Правильный ответ:

class leverage {

private: int crowbar; publiс: void pry(); };

      1. Ложно; и данные, и функции могут быть как скрытыми, так и общедо- ступными.

      2. Правильный ответ: leverage lever1;

      3. г.

      4. Правильный ответ: lever1. pry();

      5. inline (также и private), int getcrow().

      6. Правильный ответ:

{ return crowbar; }

      1. Создания (определения).

      2. Класса, методом которого он является.

      3. Правильный ответ:

leverage() { crowbar = 0; }

      1. Истинно.

      2. а.

      1. Правильный ответ:

int getcrow();

int leverage::getcrow()

      1. Правильный ответ:

{ return crowbar; }

      1. Методы и данные по умолчанию являются скрытыми в классах, но обще- доступными в структурах.

      2. Три, один.

      3. Вызову одного из его методов.

      4. б, в, г.

      5. Ложно; попытки, пусть ошибочные, бывают необходимы.

      6. г. -

      7. Истинно.

      8. Правильный ответ:

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;

}

        1. Верное решение:

// 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;

}

        1. Верное решение:

// ex6_3.cpp

// Использование класса для демонстрации класса «время»

#include <iostream>

using namespace std;

///////////////////////////////////////////////////////////

class time

{

private:

int hrs, mins, secs;

public:

time(): hrs(0), mins(0), secs(0) // конструктор без аргументов