Шрифт:
Контрольные вопросы
1. Зачем нужны структуры данных с переменным количеством элементов?
2. Назовите четыре вида памяти, используемой в обычных программах.
3. Что такое свободная память? Как еще ее называют? Какие операторы работают со свободной памятью?
4. Что такое оператор разыменования и зачем он нужен?
5. Что такое адрес? Как язык С++ манипулирует с адресами?
6. Какую информацию об объекте несет указатель, который на него ссылается? Какую полезную информацию он теряет?
7. На что может ссылаться указатель?
8. Что такое утечка памяти?
9. Что такое ресурс?
10. Как инициализировать указатель?
11. Что такое нулевой указатель? Зачем он нужен?
12. Когда нужен указатель (а не ссылка или именованный объект)?
13. Что такое деструктор? Когда он нужен?
14. Зачем нужен виртуальный деструктор?
15. Как вызываются деструкторы членов класса?
16. Что такое приведение типов? Когда оно необходимо?
17. Как получить доступ к члену класса с помощью указателя?
18. Что такое двусвязный список?
19. Что собой представляет переменная
Термины
Упражнения
1. Какой формат вывода значений указателя в вашей реализации языка? Подсказка: не читайте документацию.
2. Сколько байтов занимают типы
3. Напишите функцию
4. Напишите функцию
5. Напишите функцию
6. В этой главе ничего не говорилось о том, что произойдет, если, используя оператор
7. Напишите программу, считывающую символы из потока
8. Выполните упр. 7 еще раз, но теперь считывайте символы в строку
10. Посмотрите на решение упр. 7. Может ли ввод вызвать переполнение массива; иначе говоря, можете ли вы ввести больше символов, чем выделено памяти (это серьезная ошибка)? Что произойдет, если вы введете больше символов, чем выделено памяти?
11. Завершите программу, создающую список богов, из раздела 17.10.1 и выполните ее.
12. Зачем нужны две версии функции
13. Модифицируйте класс
14. Можно ли написать список богов из раздела 17.10.1 в виде односвязного списка; другими словами, могли бы мы удалить член
Послесловие
Зачем возиться с такими низкоуровневыми механизмами, как указатель и свободная память, а не просто использовать класс