Изменения
→Память
#: calloc не только
# Какие действия выполняют функции выделения памяти, если память не может быть выделена?
#: Бросит исключение.
# Зависит ли объем выделенной памяти от типа указателя? Влияет ли выравнивание на объем выделяемой динамической памяти?
#: Сколько скажешь, столько и выделит.
# Можно ли с помощью функции realloc() уменьшить объем выделенной памяти?
#: Да
# Что произойдет, если функции free() передать в качестве аргумента нулевой указатель?
#: Ничего
# В чем главное отличие объектно-ориентированного механизма new/delete от механизма malloc()/free()?
#: new - бросает исклчение, вызывает конструкторы, по умолчанию. malloc - выделяет просто сырую память, возвращает null, если не получилось.
# Сколько существует форм new/delete? В чем их отличие?
#: new, delete, new[], delete[]. Первые два - для объектов, вторые - для массивов объектов.
# Какие типы являются POD-типами? Чем отличается работа механизма new/delete с POD-объектами и nonPOD-объектами?
#: Plain Old Data Structure in C++ is an aggregate class that contains only PODS as members, has no user-defined destructor, no user-defined copy assignment operator, and no nonstatic members of pointer-to-member type
# Какие функции выполняет обработчик new?
???
# Можно ли реализовать собственный обработчик new и «прицепить» его к механизму new/delete?
???
# В чем главное отличие объединения от других видов классов С++?
#: Размер объединения всегда равен размеру максимального его члена. Соответственно, в любой момент он корректно хранит только одно из своих полей.
# Может ли объединение участвовать в иерархии наследования?
# Разрешается ли определять для объединения конструкторы и деструктор? А виртуальные функции?
#: Да. Нет. Нет.
# В чем похожи и чем отличаются объединение и размещающий new?
# Объясните, почему при использовании размещающего new нужно явным образом вызывать деструктор?
#: Чтобы не запутаться в new/delete. Умные указатели сами следят за объектами, которыми владеют.
# Что такое «стратегия владения»? Сколько стратегий владения вы знаете?
#: RAII??
# Какой интеллектуальный указатель реализован в стандартной библиотеке STL, и какую стратегию владения он реализует?
#: auto_ptr, RAII
# Объясните, в чем преимущества и недостатки интеллектуальных указателей со счетчиком ссылок.
#: преимущества - указатель владеет объектом. Безопасность в плане исключений. Недостатки - циклические ссылки и возможная путаница с обычными указателями.
# Разрешается ли перегружать new и delete и какими способами?
# Опишите схему функции, перегружающей глобальную функцию new.
# Приведите структуру и принцип действия паттерна Adapter.
# Сформулируйте основную проблему множественного наследования.
#: Читай ромбическое наследование(diamond problem)
# Выполняется ли принцип подстановки при открытом множественном наследовании?
# Что такое виртуальное наследование? Каковы его преимущества и недостатки по сравнению с обычным наследованием?