1679
правок
Изменения
м
→Память
== Память ==
# Что является единицей памяти в С++? Какие требования к размеру единицы памяти прописаны в стандарте С++?
#: Байт. Чтобы в нее вмещался любой символ, причем не требуется чтобы в байте было 8 бит.
# В каких единицах выдает результат операция sizeof? Какие типы данных имеют размер 1?
#: В байтах. char(signed/unsigned), bool
# Какие три вида памяти входят в модель памяти С++?
# Сколько видов динамической памяти обеспечивает С++?
# Какие функции для работы с динамической памятью достались С++ по наследству от С? В какую библиотеку они включены?
#: malloc, calloc, realloc, free. <cstdlib>
# Какие функции выделяют память, и с помощью каких функций память освобождается?
#: malloc, calloc, realloc, new([]) выделяют, free, delete([]) освобождают(realloc, видимо, тоже может)
# Какое важное отличие имеет функция calloc() от функции malloc()?
#: calloc не только
# Какие действия выполняют функции выделения памяти, если память не может быть выделена?
# Зависит ли объем выделенной памяти от типа указателя? Влияет ли выравнивание на объем выделяемой динамической памяти?
# В чем главное отличие объектно-ориентированного механизма new/delete от механизма malloc()/free()?
# Сколько существует форм new/delete? В чем их отличие?
#: new, delete, new[], delete[]. Первые два - для объектов, вторые - для массивов объектов.
# Какие типы являются POD-типами? Чем отличается работа механизма new/delete с POD-объектами и nonPOD-объектами?
# Какие функции выполняет обработчик new?
# Можно ли реализовать собственный обработчик new и «прицепить» его к механизму new/delete?
# В чем главное отличие объединения от других видов классов С++?
#: Размер объединения всегда равен размеру максимального его члена. Соответственно, в любой момент он корректно хранит только одно из своих полей.
# Может ли объединение участвовать в иерархии наследования?
# Разрешается ли определять для объединения конструкторы и деструктор? А виртуальные функции?
# Объясните, почему при использовании размещающего new нужно явным образом вызывать деструктор?
# Зачем нужны интеллектуальные указатели?
#: Чтобы не запутаться в new/delete. Умные указатели сами следят за объектами, которыми владеют.
# Что такое «стратегия владения»? Сколько стратегий владения вы знаете?
# Какой интеллектуальный указатель реализован в стандартной библиотеке STL, и какую стратегию владения он реализует?
# Какие операции определены в С++ для косвенного вызова метода через указатель?
# Что такое «функтор»? Приведите пример функционального класса.
#: Это класс с перегруженным оператором(). Например, можно сделать абстрактный интерфейс унарной функции, у которой будет виртуальный оператор().
# Какими способами функтор вызывается?
# Можно ли использовать наследование при разработке функторов?
# Объясните, каким образом с помощью виртуального наследования можно вообще запретить наследование.
# Какие средства С++ составляют RTTI?
#: dynamic cast и typeid
# Объясните разницу между повышающим, понижающим и перекрестным приведением.
# Какими свойствами должен обладать класс, чтобы с ним работал механизм RTTI?