Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы.doc
Скачиваний:
33
Добавлен:
04.03.2016
Размер:
317 Кб
Скачать
☆

Література

  1. Джесс Либерти. Освой самостоятельно С++. 3 и-е. М.: Вильямс. – 2000.

  2. Г. Шилдт. Полный справочник по С++. 4 и-е. – М.: Вильямс. – 2003.

  3. Т.А. Павловская. С/С++. Программирование на языке высокого уровня. ПИТЕР-2002

  4. С.В. Глушаков. Практикум по С++. ФОЛИО – 2006

  5. Х. Дейтел, П. Дейтел. Как программировать на С++.

  6. Ю.Л. Кетков. Введение в языки программирования C и C++ http://www.intuit.ru/department/pl/ccpp/

  7. А.Л. Фридман. Язык программирования C++ http://www.intuit.ru/department/pl/cpp/

Лабораторная работа 9

Тема: Ссылки

Цель:

Теоретические сведения

См. лекция №9

Ход работы

  1. Создайте объект целого типа в стеке. Затем ссылку и указатель на него. Измените и распечатайте значение этого объекта с помощью указателя и ссылки.

  2. Создайте объект любого ранее разработанного класса (Cat, Worker,Pencil…) в стеке. Затем ссылку и указатель на него. Измените и распечатайте значение этого объекта с помощью указателя и ссылки.

  3. Создайте объект любого ранее разработанного класса (Cat, Worker,Pencil…) в свободной памяти. Затем ссылку и указатель на него. Измените и распечатайте значение этого объекта с помощью указателя и ссылки.

  4. Напишите двумя способами:

  • прототип функции для вычисления квадрата, куба и обратного значения веществен­ного числа;

  • реализацию этой функции;

  • драйвер для ее проверки.

  1. Напишите двумя способами:

  • прототип функции для вычисления длины окружности, площади круга и объема шара, если известен радиус;

  • реализацию этой функции;

  • драйвер для ее проверки.

  1. Введите с клавиатуры с помощью функции scanf() два числа (целое и вещественное) и распечатайте их на экране при помощи функцииprintf(), если оба числа были введены правильно.

  2. Напишите три варианта функции, которая принимает параметром объект любого ранее разработанного класса (Cat, Worker,Pencil…) и возвращает в качестве результата измененный объект. Проверьте их.

  3. Напишите функцию, которая создает объект любого ранее разработанного класса (Cat, Worker,Pencil…) в свободной памяти и возвращает в качестве результата ссылку на объект. Проверьте ее.

  4. Напишите функцию, которая создает объект любого ранее разработанного класса (Cat, Worker,Pencil…) в свободной памяти и возвращает в качестве результата адрес объекта. Проверьте ее.

  5. Создайте в свободной памяти три объекта различных типов (Cat, Worker,Pencil…). Замените указатели ссылками и выполните обработку этих объектов. Освободите свободную памяти, применяя указатели.

Контрольные вопросы

  1. Что такое ссылка?

  2. Как создать ссылку в программе?

  3. Обязательно ли нужно инициализировать ссылку?

  4. На что могут быть созданы ссылки?

  5. Для чего нужна передача аргументов функции по ссылке?

  6. Какие два способа передачи по ссылке существуют? В чем их различие?

  7. Можно ли использовать одновременно и ссылки и указатели в одной функции?

  8. Может ли функция возвращать в качестве результата ссылку?

  9. Может ли имя функции быть слева от оператора = ?

  10. Почему передача по ссылке более эффективна?

  11. Что такое ссылка-константа? Когда она применяется?

  12. Какую роль в классах выполняет конструктор копирования?

  13. Какой прототип у конструктора копирования?

  14. Можно ли создавать объект в функции и возвращать ссылку на него?

  15. Когда пользуются ссылками, а когда указателями?