Операция opera tor >> позволяет вводить и символьные массивы, и строки типа st ri ng, однако ввод выполняется только до первого символа-разделителя (обычно это пробел). Например, объявим в программе символьный массив:
char s[50]:
Попробуем ввести в переменную s строку «привет от строки», выполнив операцию cin >> s;
В массив попадет только первое слово «привет». Точно так же операция работает и при вводе строки в переменную типа stri ng. ПРИМЕЧАНИЕ
Операции ввода-вывода для типа string реализованы в библиотеке <string>, а не в <iostream>. Все операции реализованы как внешние функции.
Упражнения
1. Реализовать упражнения из глав 3 и 4 с разделением на интерфейс и реализацию.
2. Реализовать упражнения из глав 8 и 9, разделив каждый класс на интерфейс и реализацию.
3. Реализовать упражнения из главы 11с использованием модели явного инстанцирования.
4. Реализовать упражнения из главы 8, поместив базовые классы в пространство имен Base, а наследников — в пространство имен Derived.
5. Реализовать упражнения из глав 5 и 6, разделив каждый класс на интерфейс и реализацию. Классы-контейнеры поместить в пространство имен Library.
Контрольные вопросы
1. Объясните, зачем нужны виртуальные функции.
2. Что такое связывание?
3. Чем раннее связывание отличается от позднего?
4. Какие два вида полиморфизма реализованы в С++?
5. Влияет ли наличие виртуальных функций на размер класса?
6. Дайте определение полиморфного класса.
7. Может ли виртуальная функция быть дружественной функцией класса?
8. Наследуются ли виртуальные функции?
9. Каковы особенности вызова виртуальных функций в конструкторах деструкторах?
10. Можно ли сделать виртуальной перегруженную операцию, например сложение?
11. Можно ли виртуальную функцию вызвать невиртуально?
12. Может ли конструктор быть виртуальным? А деструктор?
13. В каких случаях вызов виртуальной функции класса-наследника через указатель базового класса требует явного преобразования типа?
14. Как виртуальные функции влияют на размер класса?
15. Как объявляется чистая виртуальная функция?
16. Дайте определение абстрактного класса.
17. Наследуются ли чистые виртуальные функции?
18. Можно ли объявить деструктор чисто виртуальным?
19. Чем отличается чистый виртуальный деструктор от чистой виртуальной функции?
20. Зачем требуется определение чистого виртуального деструктора?
21. Можно ли сделать операцию присваивания виртуальной? А операцию индексирования? А чистой виртуальной?
22. Объясните, как можно реализовать «виртуальность» независимой функции.
23. Приведите классификацию целей наследования.
24. Объясните разницу' между наследованием интерфейса и наследованием реализации.
25. Как связаны виртуальные функции и принцип подстановки?
Опубликовал Kest
March 06 2014 10:44:03 ·
0 Комментариев ·
2878 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.