Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Объясните принцип полиморфизма.






Объясните принцип инкапсуляции.

Сокрытие деталей реализации.

9. Что такое композиция?

Использование объекта одного класса в качестве поля другого.

10. Для чего используются ключевые слова public и private?

Для определения области видимости.



11. Можно ли использовать ключевые слова public и private в структуре?

Да.

12. Существуют ли ограничения на использование public и private в классе? А в структуре?

Нет. Нет.

13. Обязательно ли делать поля класса приватными?

Нет.

14. Что такое метод? Как вызывается метод?

Метод – это функция, определенная в классе.

Если статический, то вызывается для класса, если обычный – то для объекта класса.

15. Может ли метод быть приватный?

Да.

16. Как определить метод непосредственно внутри класса? А вне класса? Чем эти определения отличаются?

class A

{

void method x{}

};

17. Можно в методах присваивать параметрам значения по умолчанию?

Да. Существуют дополнительные ограничения.

18. Что обозначается ключевым словом this?

Указатель на объект, который вызвал метод.

19. Зачем нужны константные методы? Чем отличается определение константного метода от обычного?

Чтобы предотвратить случайное изменение данных внутри метода и показать, что метод не меняет состояние класса.

20. Может ли константный метод вызываться для объектов-переменных? А обычный метод — для объектов-констант?

Да. Нет.

Объясните принцип полиморфизма.

Возможность работать с объектами разных классов одинаковым образом.

Поддержка различного поведения родственных классов, предоставляемого через единый интерфейс базового класса.

Есть статический – на этапе компиляции. Шаблоны, перегрузка функций и операторов.

Есть динамический – виртуальные функции. Точное значение операции определяется объектом для которого она вызывается.

22. Сколько места в памяти занимает объект класса? Как это узнать?

Столько, сколько все его поля, кроме статических, плюс размер указателя на таблицу виртуальных функций, если объект содержит виртуальные функции. Если же объект не содержит данных и виртуальных функций, то его размер равен “1 char на gcc 32 bit“.

23. Каков размер «пустого» объекта?

Если объект не содержит данных и виртуальных функций, то его размер равен “1 char на gcc 32 bit“.

24. Влияют ли методы на размер объекта?

Нет.

25. Одинаков ли размер класса и аналогичной структуры?

Да.

26. Какие операции нельзя перегружать? Как вы думаете, почему?

sizeof,.,.*, typeid?:

 

потому что их операнд – это имя типа.

27. Можно ли перегружать операции для встроенных типов данных?

Нет, потому что тип – это набор данных и операций над ними. Изменяя семантику типа, мы меняем само определение типа.

28. Можно ли при перегрузке изменить приоритет операции?

Нет.

29. Можно ли определить новую операцию?

Нет. Надо пользоваться функциями.

30. Перечислите особенности перегрузки операций как методов класса. Чем отличается перегрузка внешним образом от перегрузки как метода класса?

На один параметр меньше, чем внешняя перегрузка.

31. Какой результат должны возвращать операции с присваиванием?

Ссылку.

32. Как различаются перегруженная префиксная и постфиксная операции инкремента и декремента?

Постфикс имеет фиктивный параметр.

33. Что означает выражение *this? В каких случаях оно используется?

Ссылка на объект.

Для разрешения неоднозначности, для определения размера.

34. Какие операции не рекомендуется перегружать как методы класса? Почему?

Те, которым не нужен доступ к внутренним переменным класса. Чтобы не нарушать инкапсуляции.

35. Какие операции разрешается перегружать только как методы класса?

Те, для которых нужна гарантия, что их первый операнд lvalue.

= [] ()->

36. Дайте определение дружественной функции. Как объявляется дружественная функция? А как определяется?

Функция имеет доступ к закрытой части класса.

Не находится в области видимости класса.

Не должна вызываться для объекта класса.

Не имеет указателя *this.

37. Дайте определение конструктора. Каково назначение конструктора? Перечислите отличия конструктора от метода.

Специальный метод для инициализации объекта.

Не имеет возвращаемого значения. Не может быть статическим, виртуальным. Внутри не работает механизм виртуальных функций, потому что ещё не инициализирована таблица виртуальных функций.

38. Сколько конструкторов может быть в классе? Допускается ли перегрузка конструкторов? Какие виды конструкторов создаются по умолчанию?

Сколько угодно. Да. default ctor, copy ctor.

39. Может ли конструктор быть приватным? Какие последствия влечет за собой объявление конструктора приватным?

Да. Невозможность конструирования объекта класса.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.