- Что определяет класс? Чем обличается класс от объекта?
- Можно ли объявлять массив объектов? А массив классов?
- Разрешается ли объявлять указатель на объект? А указатель на класс?
- Допускается ли передавать объекты в качестве параметров, и какими способами? А возвращать как результат?
- Как называется использование объекта одного класса в качестве поля другого класса?
- Является ли структура классом? Чем класс отличается от структуры?
- Какие ключевые слова в С++ обозначают класс?
- Объясните принцип инкапсуляции.
- Что такое композиция?
- Для чего используются ключевые слова public и private?
- Можно ли использовать ключевые слова public и private в структуре?
- Существуют ли ограничения на использование public и private в классе? А в структуре?
- Обязательно ли делать поля класса приватными?
- Что такое метод? Как вызывается метод?
- Может ли метод быть приватный?
- Как определить метод непосредственно внутри класса? А вне класса? Чем эти определения отличаются?
- Можно в методах присваивать параметрам значения по умолчанию?
- Что обозначается ключевым словом this?
- Зачем нужны константные методы? Чем отличается определение константного метода от обычного?
- Может ли константный метод вызываться для объектов-переменных? А обычный метод — для объектов-констант?
- Объясните принцип полиморфизма.
- Сколько места в памяти занимает объект класса? Как это узнать?
- Каков размер «пустого» объекта?
- Влияют ли методы на размер объекта?
- Одинаков ли размер класса и аналогичной структуры?
- Какие операции нельзя перегружать? Как вы думаете, почему?
- Можно ли перегружать операции для встроенных типов данных?
- Можно ли при перегрузке изменить приоритет операции?
- Можно ли определить новую операцию?
- Перечислите особенности перегрузки операций как методов класса. Чем отличается перегрузка внешним образом от перегрузки как метода класса?
- Какой результат должны возвращать операции с присваиванием?
- Как различаются перегруженная префиксная и постфиксная операции инкремента и декремента?
- Что означает выражение *this? В каких случаях оно используется?
- Какие операции не рекомендуется перегружать как методы класса? Почему?
- Какие операции разрешается перегружать только как методы класса?
- Дайте определение дружественной функции. Как объявляется дружественная функция? А как определяется?
- Дайте определение конструктора. Каково назначение конструктора? Перечислите отличия конструктора от метода.
- Сколько конструкторов может быть в классе? Допускается ли перегрузка конструкторов? Какие виды конструкторов создаются по умолчанию?
- Может ли конструктор быть приватным? Какие последствия влечет за собой объявление конструктора приватным?
- Приведите несколько случаев, когда конструктор вызывается неявно.
- Как проинициализировать динамическую переменную?
- Как объявить константу в классе? Можно ли объявить дробную константу?
- Каким образом разрешается инициализировать константные поля в классе?
- В каком порядке инициализируются поля в классе? Совпадает ли этот порядок с порядком перечисления инициализаторов в списке инициализации конструктора?
- Какие конструкции С++ разрешается использовать в списке инициализации качестве инициализирующих выражений?
- Какой вид конструктора фактически является конструктором преобразования типов?
- Для чего нужны функции преобразования? Как объявить такую функцию в классе?
- Как запретить неявное преобразование типа, выполняемое конструктором инициализации?
- Какие проблемы могут возникнуть при определении функций преобразования?
- Для чего служит ключевое слово explicit?
- Влияет ли наличие целочисленных констант-полей на размер класса?
- Разрешается ли объявлять массив в качестве поля класса. Как присвоить элементам массива начальные значения?
- Сколько операндов имеет операция индексирования []? Какой вид результата должна возвращать эта операция?
- Для чего нужны статические поля в классе? Как они определяются?
- Как объявить в классе и проинициализировать статический константный массив?
- Что такое выравнивание и от чего оно зависит? Влияет ли выравнивание на размер класса?
- Дайте определение контейнера.
- Какие виды встроенных контейнеров в С++ вы знаете?
- Какие виды доступа к элементам контейнера вам известны?
- Чем отличается прямой доступ от ассоциативного?
- Перечислите операции, которые обычно реализуются для последовательного доступа к элементам контейнера.
- Дайте определение итератора.
- Можно ли реализовать последовательный доступ без итератора? В чем преимущества реализации последовательного доступа с помощью итератора?
- Что играет роль итератора для массивов С++?
- Что такое деструктор? Может ли деструктор иметь параметры?
- Почему для классов-контейнеров деструктор надо писать явным образом?
- Допускается ли перегрузка деструкторов?
- Что такое «глубокое копирование» и когда в нем возникает необходимость?
- Какое копирование осуществляет стандартный конструктор копирования?
- Чем отличается копирование от присваивания?
- Объясните, почему в операции присваивания требуется проверка присваивания самому себе?
- Можно ли в качестве операции индексирования использовать операцию вызова функции ()? В чем ее преимущества перед операцией []?
- Почему необходимо писать два определения операции индексирования? Чем они отличаются?
- Дайте определение вложенного класса.
- Можно ли класс-итератор реализовать как внешний класс? А как вложенный? В чем отличия этих методов реализации?
- Может ли объемлющий класс иметь неограниченный доступ к элементам вложенного класса? А вложенный класс — к элементам объемлющего?
- Ограничена ли глубина вложенности классов?
- Можно ли определить вложенный класс внешним образом? Зачем это может понадобиться?
- Каким образом вложенный класс может использовать методы объемлющего класса? А объемлющий — методы вложенного?
- Что такое «запредельный» элемент, какую роль он играет в контейнерах?
- Объясните, по каким причинам трудно написать универсальный контейнер, элементы которого могут иметь произвольный тип.
- Назовите ключевые слова С++, которые используются для обработки исключений.
- Исключение — это:
- событие;
- ситуация;
- объект;
- ошибка в программе;
- прерывание;
- Каким образом исключение генерируется?
- Каковы функции контролируемого блока?
- Что обозначается ключевым словом catch?
- контролируемый блок;
- блок обработки исключения;
- секция-ловушка;
- генератор исключения;
- обработчик прерывания;
-
Какого типа может быть исключение?
-
Сколько параметров разрешается писать в заголовке секции-ловушки?
-
Какими способами разрешается передавать исключение в блок обработки?
-
Объясните, каким образом преодолеть ограничение на передачу единственного параметра в блок обработки.
-
Почему нельзя выполнять преобразования типов исключений при передаче в секцию-ловушку?
-
Напишите конструкцию, которая позволяет перехватить любое исключение.
-
Могут ли контролируемые блоки быть вложенными?
-
Зачем нужен «контролируемый блок-функция» и чем он отличается от обычного контролируемого блока?
-
Перечислите возможные способы выхода из блока обработки.
-
Каким образом исключение «передать дальше»?
-
Сколько секций-ловушек должно быть задано в контролируемом блоке?
-
Что такое «спецификация исключений»?
-
Что происходит, если функция нарушает спецификацию исключений?
-
Учитывается ли спецификация исключений при перегрузке функций?
-
Что такое «иерархия исключений»?
-
Существуют ли стандартные исключения? Назовите два-три типа стандартных исключений.
-
Поясните «взаимоотношение» исключений и деструкторов.
-
Объясните, зачем может понадобиться подмена стандартных функций завершения.
-
Какие виды нестандартных исключений вы знаете?
-
В чем отличие механизма структурной обработки исключений Windows от стандартного механизма?
-
Какие две роли выполняет наследование?
-
Какие виды наследования возможны в С++?
-
Чем отличается модификатор доступа protected от модификаторов private и public?
-
Чем открытое наследование отличается от закрытого и защищенного?
-
Какие функции не наследуются?
-
Сформулируйте правила написания конструкторов в производном классе.
-
Каков порядок вызова конструкторов? А деструкторов?
-
Можно ли в производном классе объявлять новые поля? А методы?
-
Если имя нового поля совпадает с именем унаследованного, то каким образом разрешить конфликт имен?
-
Что происходит, если имя метода-наследника совпадает с именем базового метода?
-
Сформулируйте принцип подстановки.
-
Когда выполняется понижающее приведение типов?
-
Объясните, что такое «срезка» или «расщепление».
-
Объясните, зачем нужны виртуальные функции.
-
Что такое связывание?
-
Чем «раннее» связывание отличается от «позднего»?
-
Какие два вида полиморфизма реализованы в С++?
-
Дайте определение полиморфного класса.
-
Может ли виртуальная функция быть дружественной функцией класса?
-
Наследуются ли виртуальные функции?
-
Каковы особенности вызова виртуальных функций в конструкторах и деструкторах?
-
Можно ли сделать виртуальной перегруженную операцию, например, сложение?
-
Может ли конструктор быть виртуальным? А деструктор?
-
Как виртуальные функции влияют на размер класса?
-
Как объявляется «чистая» виртуальная функция?
-
Дайте определение абстрактного класса.
-
Наследуются ли чистые виртуальные функции?
-
Можно ли объявить деструктор чисто виртуальным?
-
Чем отличается чистый виртуальный деструктор от чистой виртуальной функции?
-
Зачем требуется определение чистого виртуального деструктора?
-
Наследуется ли определение чистой виртуальной функции?
-
Приведите классификацию целей наследования.
-
Объясните разницу наследования интерфейса от наследования реализации.
-
Назовите причины, требующие разделения программ на части.
-
Дайте определение термина «единица трансляции»?
-
Чем отличается файл с исходным текстом от единицы трансляции?
-
Существуют ли в С++ конструкции, позволяющие идентифицировать отдельный модуль?
-
Какие способы сборки программы вы можете назвать?
-
Что такое «объектный модуль»? Программа, которая «собирает» объектные модули в программу, называется _____________ ?
-
В чем заключается отличие аргумента «файл» от <файл> в директиве #include?
-
Что такое ODR?
-
Объясните, что такое «страж» включения и зачем он нужен.
-
Является ли интерфейс класса его определением?
-
Сколько определений класса может быть в единице трансляции?
-
Сколько определений класса может быть в многофайловой программе?
-
Чем отличаются стандартные заголовки , <string.h> и ?
-
Объясните суть идиомы Pimpl.
-
Что такое делегирование и как его можно использовать для повышения степени инкапсуляции?
-
Каким образом глобальную переменную, определенную в одной единице трансляции, сделать доступной в другой единице трансляции? А константу?
-
Можно ли использовать слово extern при объявлении функций?
-
Как локализовать объявление функции в файле?
-
Чем отличается «внешнее» связывание от «внутреннего» связывания?
-
Что такое «спецификации компоновки»?
-
Какие объекты обладают внутренним связыванием по умолчанию?
-
Какие области видимости имен вы знаете?
-
Для чего используются пространства имен?
-
Чем отличаются именованные и неименованные пространства имен?
-
Могут ли пространства имен быть вложенными?
-
Для чего применяются алиасы пространства имен?
-
Как сделать члены пространства имен доступными в нескольких (в пределе — во всех) файлах программного проекта?
-
Объясните разницу между статической и динамической инициализацией.
-
В чем состоит проблема инициализации глобальных статических переменных?
-
Какие элементы класса можно объявлять статическими?
-
Можно ли объявить в классе статическую константу? А константный статический массив?
-
А какие статические поля можно инициализировать непосредственно в классе?
-
Как определяются статические поля? В какой момент работы программы выполняется инициализация статических полей?
-
Сколько места в классе занимают статические поля ?
-
Чем отличается статический метод от обычного?
-
Какие методы класса не могут быть статическими?
-
Какие применения статических полей вы можете привести? А каким образом применяются статические методы?
-
Приведите структуру и принцип действия паттерна Singleton.
-
Для чего предназначены шаблоны?
-
Какие виды шаблонов в С++ вы знаете?
-
Объясните термин «инстанцирование шаблона».
-
В чем разница между определением и объявлением шаблона?
-
Объясните назначение ключевого слова typename.
-
Какие виды параметров разрешается задавать в шаблоне класса? А в шаблоне функции?
-
Можно ли параметрам шаблона присваивать значения по умолчанию?
-
Может ли параметром шаблона быть другой шаблон? Каковы особенности объявления параметра-шаблона?
-
Что такое специализация шаблона? Объясните разницу между полной и частичной специализацией.
-
Разрешается ли специализировать шаблон функции?
-
Может ли класс-шаблон быть вложенным в другой класс-шаблон? А в обычный класс?
-
Можно ли объявить в классе шаблонный метод? А шаблонный конструктор?
-
Можно ли перегружать функцию-шаблон?
-
Какие параметры функции-шаблона выводятся автоматически?
-
Может ли шаблон класса быть наследником обычного класса? А обычный класс от шаблона?
-
Объясните, что такое класс свойств (класс трактовок).
-
Каким образом можно использовать возможность наследования обычного класса от шаблона?
-
Может ли шаблонный конструктор быть конструктором по умолчанию?
-
Для чего применяются директивы явного инстанцирования?
-
Объясните, в чем состоят проблемы, возникающие при разделении шаблонного класса на интерфейс и реализацию?
-
Что такое «модель явного инстанцирования» и как она работает?
-
Может ли шаблонный класс иметь «друзей»?
-
Какие проблемы возникают при объявлении дружественной функции для класса-шаблона?
-
Разрешается ли определять в классе-шаблоне статические поля? А статические методы?
-
Что такое «инициализация нулем»?
-
Что является единицей памяти в С++? Какие требования к размеру единицы памяти прописаны в стандарте С++?
-
В каких единицах выдает результат операция sizeof? Какие типы данных имеют размер 1?
-
Какие три вида памяти входят в модель памяти С++?
-
Сколько видов динамической памяти обеспечивает С++?
-
Какие функции для работы с динамической памятью достались С++ по наследству от С? В какую библиотеку они включены?
-
Какие функции выделяют память, и с помощью каких функций память освобождается?
-
Какое важное отличие имеет функция calloc() от функции malloc()?
-
Какие действия выполняют функции выделения памяти, если память не может быть выделена?
-
Зависит ли объем выделенной памяти от типа указателя? Влияет ли выравнивание на объем выделяемой динамической памяти?
-
Можно ли с помощью функции realloc() уменьшить объем выделенной памяти?
-
Что произойдет, если функции free() передать в качестве аргумента нулевой указатель?
-
В чем главное отличие объектно-ориентированного механизма new/delete от механизма malloc()/free()?
-
Сколько существует форм new/delete? В чем их отличие?
-
Какие типы являются POD-типами? Чем отличается работа механизма new/delete с POD-объектами и nonPOD-объектами?
-
Какие функции выполняет обработчик new?
-
Можно ли реализовать собственный обработчик new и «прицепить» его к механизму new/delete?
-
В чем главное отличие объединения от других видов классов С++?
-
Может ли объединение участвовать в иерархии наследования?
-
Разрешается ли определять для объединения конструкторы и деструктор? А виртуальные функции?
-
В чем похожи и чем отличаются объединение и размещающий new?
-
Объясните, почему при использовании размещающего new нужно явным образом вызывать деструктор?
-
Зачем нужны интеллектуальные указатели?
-
Что такое «стратегия владения»? Сколько стратегий владения вы знаете?
-
Какой интеллектуальный указатель реализован в стандартной библиотеке STL, и какую стратегию владения он реализует?
-
Объясните, в чем преимущества и недостатки интеллектуальных указателей со счетчиком ссылок.
-
Разрешается ли перегружать new и delete и какими способами?
-
Опишите схему функции, перегружающей глобальную функцию new.
-
Отличается ли реализация перегруженной функции new для массивов от реализации «обычной» функции new()?
-
Как вы думаете, почему функции new/delete, перегружаемые для класса, являются статическими?
-
Зачем при перегрузке new/delete для класса нужно проверять размер запрашиваемой памяти?
-
Объясните, чем определяется «динамичность» контейнеров?
-
Что такое «стратегия распределения памяти», и какие стратегии выделения памяти вы знаете?
-
Рассмотрите следующую стратегию распределения памяти: память выделяется для нескольких элементов блоками фиксированной длины, но блоки связываются в список. Для какого вида контейнера можно использовать такую стратегию?
-
Какие операции можно перегрузить для доступа к элементам двумерного массива?
-
В чем заключаются сложности использования операции индексирования [] для доступа к элементам двумерного массива?
-
Каковы способы реализации операций с контейнерами?
-
Какую конструкцию можно назвать «обобщенный алгоритм»?
-
Каким образом объявить указатель на метод?
-
Объясните разницу между указателем на функцию и указателем на метод.
-
Каким образом получить адрес метода?
-
Можно ли указателю на функцию присваивать адрес метода?
-
Какие операции определены в С++ для косвенного вызова метода через указатель?
-
Что такое «функтор»? Приведите пример функционального класса.
-
Какими способами функтор вызывается?
-
Можно ли использовать наследование при разработке функторов?
-
Разрешается ли операцию вызова функции () определять как виртуальный метод? А как статический?
-
В чем преимущества функторов перед указателями на функции?
-
Объясните, зачем нужны адаптеры функторов? Какие виды адаптеров вы знаете?
-
Как используются классы свойств при разработке функторов?
-
Объясните, что такое «композиция» и приведите примеры?
-
Объясните, чем отличается множественное наследование от простого?
-
Приведите структуру и принцип действия паттерна Adapter.
-
Сформулируйте основную проблему множественного наследования.
-
Выполняется ли принцип подстановки при открытом множественном наследовании?
-
Что такое виртуальное наследование? Каковы его преимущества и недостатки по сравнению с обычным наследованием?
-
Может ли виртуальное наследование быть одиночным?
-
Влияет ли виртуальное наследование на размер класса?
-
Объясните, каким образом с помощью виртуального наследования можно вообще запретить наследование.
-
Какие средства С++ составляют RTTI?
-
Объясните разницу между повышающим, понижающим и перекрестным приведением.
-
Какими свойствами должен обладать класс, чтобы с ним работал механизм RTTI?
-
В чем приведение указателей отличается от приведения ссылок?
-
Какие исключения связаны с механизмом RTTI?
-
Что такое «поток» — дайте определение.
-
Как классифицируются потоки, реализованые в библиотеках ввода/вывода С++?
-
Что такое буферизация и зачем она нужна?
-
Какие библиотеки ввода/вывода реализованы в С++ и чем они отличаются?
-
Перечислите стандартные потоки и объясните их назначение.
-
Зачем нужен процесс форматирования и когда он выполняется?
-
Что такое «форматная строка», и в каких функциях она используется?
-
Объясните назначение элементов спецификатора формата.
-
Сколько спецификаторов формата может быть в форматной строке?
-
Какой из элементов спецификатора формата не является умалчиваемым?
-
Перечислите несколько известных вам обозначений типов в спецификаторе формата, и укажите их назначение.
-
Сколько модификаторов типа вы знаете, и какую роль модификатор типа играет в спецификаторе формата?
-
С помощью какого флага можно выровнять выводимое значение влево? А каким образом вывести ведущие нули?
-
Какое действие оказывают на выводимую строку ширина, точнойть и флаги в спецификаторе формата?
-
Для чего в спецификаторе формата может использоваться символ звездочка («*»)? Чем отличается действие этого символа при воде и при выводе?
-
Каковы особенности ввода строк?
-
Каким образом ограничить набор вводимых символов при вводе?
-
Что является главной проблемой при использовании форматного ввода/вывода из библиотеки ?
-
Объясните, для чего нужны строковые потоки. Почему строковые потоки —всегда форматируемые?
-
С помощью каких функций выполняется работа со строковыми потоками?
-
Можно ли использовать тип string (и каким образом) со строковыми потоками?
-
Объясните, в чем заключается различие между текстовым и двоичным файлом.
-
Объясните, что означает «открыть» файл и «закрыть» файл?
-
Каким образом внешний файл связывается с потоком?
-
Можно ли один и тот же поток связать с разными файлами? А один и тот же файл с разными потоками?
-
Перечислите режимы открытия файла. Чем отличается режим “r” от режима “a”?
-
Какую роль в режиме открытия играет знак плюс («+»)?
-
В каких случаях необходимо следить за ситуацией «конец файла»? Каким способом это делается?
-
Можно ли текстовый файл открыть как двоичный? А двоичный — как текстовый?
-
Какие функции ввода/вывода используются для обмена с текстовыми файлами?
-
Перечислите функции ввода/вывода для работы с двоичными файлами.
-
Какие функции реализованы в библиотеке для обеспечения прямого доступа к записям двоичного файла? Можно ли их использовать для работы с текстовыми файлами?
-
Объясните назначение функции fseek().
-
Чем отличается функция ftell() от функции fgetpos()?
-
Объясните, что означает «перенаправление» потока? Какие потоки можно перенаправлять и куда?
-
Каким образом перенаправление ввода можно использовать для ввода строк с пробелами?
-
В чем преимущества объектно-ориентированной библитеки по сравнению с процедурной?
-
В каких состояних может находиться поток? Каким образом отслживается состояние «конец потока»?
-
Какие объектно-ориентированные потоки связаны со стандартными потоками?
-
Чем отличаются объектно-ориентированные строковые потоки от процедурных строковых потоков?
-
Каким образом строковые потоки можно использовать для ограничения ширины поля ввода? А можно ли с той же целью использовать строковые потоки ?
-
Сравните средства форматирования объектно-ориентированной и процедурной библиотеки.
-
Каким образом ввести строку типа string с пробелами?
-
Каково назначение флагов форматированя? Какие средства реализованы в библиотеке для работы с флагами форматирования?
-
Что такое «манипулятор»? В чем преимущества манипуляторов перед флагами форматирования?
-
Как связываются файлы с потоками в объектно-ориентированной библиотеке?
-
Можно ли файлы, записанные функциями библиотеки , прочитать объектно-ориентированными средствами? А наоборот?
-
Перечислите режимы открытия объектно-ориентированных файловых потоков. каким образом комбинируются режимы открытия файлоавых потоков?
-
Обязательно ли закрывать файл, связанный с объектно-ориентированным файловым потоком? А открывать?
-
Каким образом открыть файловый поток для чтения и записи одновременно?
-
Как открыть файловый поток для дозаписи?
-
Можно ли вывести значение переменной в двоичном виде и как это сделать?
-
Разрешается ли наследовать от классов библиотеки ввода/вывода?
-
Каким образом можно еренаправить объектно-ориентированный поток?
-
Как используется буфер потока для копирования потока?
-
Какими операциями выполняется форматированный ввод/вывод в файловые потоки? А неформатированный?
-
Реализованы ли в объектно-ориентированной библиотеке средства прямого доступа к файловым потокам? Сравните их с аналогичными средствами библиотеки .
-
С какими объектно-ориентированными потоками разрешается, и с какими не разрешается использовать средства прямого доступа?
-
Покажите, каким образом можно выполнить перегрузку операций ввода/вывода для нового типа данных.
-
Как выполняется обработка ошибок ввода/вывода в объектно-ориентированной библиотеке?
-
Какое стандартное исключение генерируется при ошибках ввода/вывода? Обязательно ли оно генерируется?
-
Чем стандартные широкие потоки отличаются от узких?
-
Что такое — «локаль», и каково ее назначение?
-
Как установить русский шрифт при выводе в консольное окно?
-
Чем отличается ли ввод/вывод широких файловых потоков от узких?
-
Перечислите все последовательные контейнеры стандартной библиотеки. Чем они отличаются друг от друга?
-
Перечислите адаптеры последовательных контейнеров и дайте их подробную характеристику.
-
Почему для адаптеров-очередей нельзя использовать вектор в качестве базового?
-
Чем простая очередь queue отличается от приоритетной очереди priority_queue?
-
Каким требованиям должны удовлетворять элементы контейнера?
-
Могут ли быть указатели элементами контейнера? А итераторы?
-
Почему нельзя использовать в качестве элементов контейнера стандартный интеллектуальный указатель auto_ptr?
-
Зачем в контейнере list реализованы собственные методы сортировки поиска и слияния? Можно ли пользоваться соответствующими стандартными алгоритмами при обработке списка?
-
Перечислите типовые виды конструкторов, с помощью которых можно создавать последовательный контейнер.
-
Можно ли инициализировать контейнер элементами встроенного массива? А элементами другого контейнера? Какими способами это можно сделать?
-
Почему конструктор инициализации, параметрами которого являются итераторы, сделан шаблонным во всех контейнерах?
-
Какие методы реализованы в контейнере-векторе для доступа к элементам?
-
Отличается ли функция at() доступа по индексу от перегруженной операции индексирования и чем?
-
Перечислите методы контейнера deque, относящиеся к определению размеров контейнера.
-
Чем метод size() отличается от метода capacity()? А в чем отличие этих методов от метода max_size()?
-
Перечислите методы контейнера list, предназначенные для вставки удаления и замены элементов. Отличаются ли эти методы от соответствующих методов вектора и дека?
-
Каким образом выполняются операции сравнения контейнеров?
-
Разрешается ли изменять элемент ассоциативного контейнера, доступный в данный момент по итератору?
-
Какие контейнеры называются ассоциативными и почему?
-
Чем контейнер map отличается от контейнера multimap?
-
Объясните, почему в ассоциативных контейнерах нельзя изменять элемент, доступный в данный момент по итератору.
-
По каким причинам в контейнере-множестве не реализованы типовые операции объединения, пересечения, разности и другие?
-
Как используется структура-пара в ассоциативных контейнерах?
-
Объясните, что такое «критерий сортировки», и каким требованиям он должен удовлетворять? Какой критерий сортировки принят по умолчанию?
-
Какими преимуществами обладает функция make_pair() по сравнению с конструктором pair()?
-
Почему в контейнерах-отображениях операция индексирования перегружена, а в контейнерах-множествах — нет?
-
Какие гарантии безопасности обеспечивают контейнеры стандартной библиотеки?
-
Что такое «транзакционная гарантия безопасности» и чем она отличается от базовой?
-
На какие 4 класса по надежности можно разделить все операции с контейнерами?
-
Что такое «распределитель памяти» и зачем он нужен?
-
Чем отличается битовый вектор bitset от битового вектора vector?
-
Дайте определение итератора.
-
Что такое «начальный» итератор и «конечный» итератор? Какие методы, связанные с итераторами, обязательно включает каждый контейнер?
-
Чем константный итератор отличается от неконстантного?
-
Объясните, что такое «недействительный» итератор. В каких случаях итераторы становятся недействительными?
-
Какие категории итераторов вы знаете? Какие операции обязательно реализуются для всех категорий итераторов?
-
К какому виду итераторов можно отнести встроенный указатель и почему?
-
Какие вспомогательные функции для итераторов вы знаете? В каких случаях оправдано их применение?
-
Какие адаптеры итераторов реализованы в библиотеке?
-
Объясните, почему итераторы реализованы как вложенные классы в контейнерах.
-
Чем отличаются итераторы вставки от обычных итераторов?
-
Каким образом используются потоковые итераторы?
-
Какие стандартные функторы реализованы в библиотеке STL? Каково их основное назначение?
-
Для чего нужны адаптеры функторов bind1st() и bind2nd()?
-
Как применяются адаптеры-отрицатели?
-
Почему алгоритмы remove() не удаляют элементы из контейнеров? Как реально удалить элементы из контейнера?
-
Чем отличается стабильная сортировка от обычной?
-
Какую функцию выполняет алгоритмы unique()?
-
Могут ли стандартные алгоритмы работать со строками?
-
Нужно ли сортировать ассоциативные контейнеры?
-
Можно ли алгоритмы для работы с множествами применять для последовательных контейнеров? При каких условиях?
-
Какие алгоритмы предназначены для заполнения контейнера значениями? С какими контейнерами они могут работать?
-
Каким образом заполнить с помощью алгоритма generate() последовательный контейнер, не имеющий ни одного элемента?
-
Перечислите алгоритмы, предназначенные для операций с каждым элементом контейнера.
-
Можно ли с помощью алгоритма for_each() изменить элементы контейнера?
-
Что такое инкапсуляция?
-
Что такое полиморфизм? Виды полиморфизма? Чем задаются?
-
Что такое наследование?
-
Как задать функцию без параметров?
-
Что будет разделителем для строки cin>>? (Напр. для «Один два»).
-
Требуется ли явно указывать тип возвращаемого значения в return?
-
Как определить булев тип?
-
Как надо задавать включаемые библиотечные файлы в С++? Как использовать заголовочные файлы из C?
-
Как задать пространство имен в котором определены все библиотечные функции С++?
-
Как перегрузить функцию? Как это связано с полиморфизмом?
-
Какие функции нельзя перегрузить?
-
Описать варианты наследования базового класса и к каким членам в каждом случае будет иметь доступ наследник?
-
Структура программы на С++?
-
Что такое класс и что такое объект?
-
Какие члены класса не могут иметь инициализатор? (с. 254)
-
Какие ключевые слова нельзя использовать при объявлении членов класса?
-
Может ли объявление класса включать в себя его объект или указатель на его объект?
-
Когда имеет смысл объявлять переменные класса открытыми?
-
2 отличия между структурами и классами?
-
Что такое POD? Какие признаки у POD?
-
Как определить класс с помощью слова union? Будет ли у него конструктор и деструктор? Какие особенности имеют его члены? Какой уровень доступа такой класс будет иметь по умолчанию? (с. 256)
-
2 ограничения наложенных на такие классы?
-
Чего не могут содержать такие классы (4 случая)?
-
Как осуществляется доступ к членам безымянного объединения?
-
Чего не может содержаться в безымянных объединениях (2 случая)?
-
Как объявить глобальное безымянное объединение?
-
Когда могут быть особенно полезны дружественные функции (3 случая)? Как их объявить? К каким членам класса они имеют доступ? Можно ли сделать ее доступной просто в проге (использовать 2-ой прототип)?
-
Что такое неполное объявление класса?
-
Может ли дружественная функция быть членом другого класса?
-
Как это записать?
-
Ограничения на дружественные функции (2 случая)? (с. 261)
-
Может ли класс быть дружественным?
-
К каким типам данных он будет иметь доступ?
-
Можно ли через дружественный класс узнать значение данных из класса которому он дружественен? Через его объект? Как это записывается?
-
Что гарантирует применение слова inline?
-
Какие функции компилятор может запретить подставлять?
-
Какие есть варианты определения inline функций в классе?
-
Способы объявлений объектов у которых конструктор класса принимает параметры (2 варианта)?
-
В чем особенность создания объектов класса у которого конструктор с одним параметром?
-
В чем особенности статических членов класса?
-
Чем инициализируются статические переменные-члены класса по умолчанию и когда это происходит?
-
В чем особенность задания статических переменных-членов класса?
-
Как правильно их задавать?
-
Особенности статических функций-членов (5 случаев)? (с. 271) Какие варианты перегрузки возможны?
-
Можно ли присваивать значения статическим переменным класса до создания объектов этого класса?
-
Когда вызываются конструкторы глобальных объектов?
-
Когда вызываются деструкторы глобальных объектов?
-
Как обратиться к глобальной переменной, если в функции определена локальная переменная с таким же именем?
-
Можно ли определить один класс внутри другого?
-
Можно ли определить класс внутри функции?
-
Какие ограничения накладываются на локальные классы (3 случая)? (с. 275)
-
Сколько раз будет вызываться конструктор и деструктор объекта, если его один раз передавали функции по значению?
-
Какие могут возникнуть проблемы при передаче объекта в функцию по значению?
-
Может ли функция возвращать объект?
-
Что будет в этом случае возвращаться и какие могут возникнуть проблемы?
-
Можно ли присваивать объекты друг другу?
-
В каких случаях можно использовать сокращенную форму инициализации массива объектов?
-
Как выглядит полная форма инициализации массива объектов?
-
О чем надо помнить создавая массив неинициализированных объектов?
-
Можно ли присвоить указателю адрес какого-либо члена объекта?
-
Что передается практически любой функции класса? Каким функциям это не передается (2 случая)? (с. 285)
-
На какие члены производного класса можно ссылаться с помощью базового типа указателя?
-
Как получить доступ к остальным членам производного класса?
-
Особенности адресной арифметики ввиду динамического полиморфизма?
-
Что такое указатель на член класса?
-
Его синтаксис?
-
Пример использования?
-
Синтаксис использования ссылки?
-
Что будет: int y = 8; int &s = y; s++;?
-
Может ли функция стоять в левой части оператора присваивания? Когда это возможно?
-
Что происходит с объектом которого вернули по ссылке после завершения работы вернувшей его функции?
-
Что такое независимая ссылка?
-
Когда можно присваивать значение ссылке?
-
Можно ли присваивать ссылке на базовый класс объекты производных классов?
-
Ограничения на ссылки (4 случая)?
-
Что происходит если new не смог выделить требуемую память?
-
3 причины почему new, delete лучше malloc, free? (с. 297)
-
Как проинициализировать память выделяемую new?
-
Как с помощью new выделить память для массива?
-
Как для массива правильно вызывать delete?
-
Как проинициализировать объект созданный с помощью new?
-
Как проинициализировать массивы созданные с помощью new?
-
Что нужно помнить о классах, размещая динамически массивы их объектов?
-
Заголовочный include для new?
-
Как записать new возвращающий нулевой указатель в случае неудачи распределения памяти?
-
Буферизованный new?
-
Является ли это перегрузкой функции: void f (int* p); void f (int p[]);?
-
Является ли это перегрузкой функции: void f(int a); и void f(const int a);? void f(int a); & void f(unsigned int a);? void f(int a); & void f(int &a);?
-
Форма записи конструктора копирования? Пример перегрузки?
-
3 случая когда может использоваться конструктор копирования для присваивания?(с. 308)
-
Вызывается ли здесь конструктор копирования: A a; B b; a = b;?
-
Как создать указатель на функции: void f (int a. float f); void f (int a);?
-
Где можно задать параметры по умолчанию для функции?
-
Можно ли создать конструктор с параметрами заданными по умолчанию?
-
Неоднозначность (2 случая)?
-
Общий вид операторной функции-члена?
-
Как перегрузить + чтобы можно было написать (ob.a + ob.b).show();? Когда разрушится объект в скобках?
-
Примеры перегрузок -, =, ++x, x++, +=?
-
Ограничения налагаемые на перегруженные операторы (3 случая)?
-
Какие операторы нельзя перегружать (4 экземпляра)?
-
Какие перегруженные операторы наследуются производными классами, а какие нет? Можно ли их перегрузить в производном классе?
-
Как перегрузить оператор с помощью дружественной функции?
-
Какие операторы нельзя перегрузить с помощью дружественных функций (4 штуки)?
-
Как перегрузить операторы x++, ++x с помощью дружественных функций?
-
Как перегрузить оператор сложения объекта с числом?
-
Примеры перегрузки new и delete?
-
Примеры перегрузки new и delete для массивов?
-
Перегрузка new и delete без генерирования исключительной ситуации?
-
Какие ограничения есть на перегрузку (), [], -> (2 случая)?
-
Пример перегрузки []?
-
Пример перегрузки ()?
-
Пример перегрузки ->?
-
Пример перегрузки ,?
-
Какие виды доступа при наследовании бывают и как при этом трактуются данные различных видов доступа из базового класса в производном?
-
Форма записи при множественном наследовании?
-
Порядок вызова конструкторов и деструкторов в производном классе? Если он использовал множественное наследование?
-
Как передать параметры конструктору базового класса?
-
Правило объявления переменных базового класса в конструкторе производного?
-
2 Способа повысить уровень доступа к членам базового класса? На все ли члены базового класса это распространяется?(с. 360)
-
Как повысить уровень доступа к функции базового класса?
-
Неоднозначность при множественном наследовании?
-
2 способа обойти ее?
-
А если d1 virtual наследует, а d2 нет?
-
Форма записи виртуального наследования?
-
Виды полиморфизма? На чем основаны?
-
Можно ли в классе-наследнике написать реализацию виртуальной функции с другим числом параметров (лишние имеют значения по умолчанию)?
-
Будет ли работать полиморфизм при использовании ссылок на базовый класс?
-
3 ограничения для виртуальных функций?
-
Наследуется ли атрибут виртуальности функции?
-
Если в Base virtual f(), d1:B f(), d2:d1, то что будет: Base *p = &d1; p->f(); Base *p = &d2; p->f(); d1 *p1; p1 = &d2; p1->f();?
-
Принцип иерархичности наследования относительно выбора реализации функции?
-
Форма объявления чисто виртуальной функции?
-
Что такое раннее связывание и что такое позднее связывание? Их плюсы и минусы?
-
Форма записи шаблонных функций?
-
Как называется конкретная версия шаблонной функции создаваемая компилятором?
-
Как называется процесс генерации конкретной функции?
-
Сколько вариантов шаблонной функции генерирует компилятор?
-
Как явно перегрузить обобщенную функцию (2 варианта)?
-
Как перегрузить шаблонную функцию?
-
Пример объявления обобщенного класса и его объекта?
-
Пример записи объявления функции обобщенного класса и ее реализации?
-
Можно ли создать реализацию шаблонного класса с пользовательским типом данных?
-
Пример обобщенного безопасного массива?
-
То же самое, но с заданием размера этого массива?
-
Какие типы можно использовать в качестве стандартных параметров для шаблонного класса, функции?
-
Правила передачи стандартных параметров шаблонного класса?
-
Пример использования аргументов по умолчанию в шаблонных классах?
-
Пример явной специализации класса?
-
2 случая применения typename?
-
Использование слова export применительно к шаблонам?
-
Общий вид операторов try и catch?
-
Пример try, throw, catch?
-
Что будет если генерируется исключительная ситуация для которой не предусмотрена обработка?
-
Пример, когда может генерироваться исключение вне блока try?
-
Может ли catch располагаться не сразу за try?
-
Пример использования нескольких catch?
-
Как надо выполнять перехват исключения описанного с помощью базового и производного типов?
-
Как ввести перехват всех исключительных ситуаций?
-
Как можно грамотно его использовать вместе с перехватчиками остальных исключений?
-
Как запретить функции генерировать исключительные ситуации?
-
Область действия ограничения функции на исключительные ситуации?
-
Как повторно сгенерировать исключительную ситуацию?
-
Какие функции вызываются при неверной обработке исключительной ситуации? И в каких конкретно случаях?
-
Заголовок для функций terminate & unexpected?
-
Какие функции вызывают terminate & unexpected?
-
Как поменять обработчик для функций terminate & unexpected?
-
Чего не должны делать новые обработчики?
-
Как узнать перехвачена ли уже сгенерированная исключительная ситуация?
-
?Поток. Его принцип деятельности?
-
2 основных класса С++ для ввода/вывода?
-
Высокоуровневая иерархия?
-
Какие потоки открываются при начале выполнения программы?
-
2 способа форматирования данных при вводе/выводе?
-
18 флагов fmtflags?
-
Функция для установки флагов формата?
-
Можно ли применить ее сразу для всех потоков?
-
Функция для сброса флагов формата?
-
Перегруженная форма функции setf()?
-
Функция для определения текущего состояния флагов форматирования?
-
Как установить группу флагов?
-
Функции изменения ширины, точности и символа заполнения?
-
32 манипулятора формата?
-
Заголовок для манипуляторов с параметрами?
-
Пример перегрузки оператора вставки?
-
Может ли перегруженная функция вставки быть членом класса?
-
Как с помощью перегруженной функции вставки вывести закрытые члены класса?
-
Пример перегрузки оператора извлечения?
-
Как проверить какой поток вызвал перегруженный оператор извлечения/вставки?
-
Как создать собственный манипулятор?
-
Заголовок для реализации файлового ввода / вывода?
-
Класс для низкоуровневого управления файловым потоком?
-
Как связать файловый поток с файлом?(2)
-
Отличие текстового от бинарного режима открытия файла?
-
Режимы открытия файла?
-
Режимы открытия по умолчанию?
-
Как проверить успешность открытия файла?(2)
-
Функция закрытия файла?
-
Функции чтения / записи символов для файла?
-
Как определить закончился ли файл при его чтении?
-
Функции чтения / записи блоков бинарных данных?
-
Как записать / считать структуру?
-
Что будет если конец файла обнаружится раньше чем read считает num символов?
-
Как определить число считанных символов?
-
Перегрузки get()?
-
Отличие get() от getline()?
-
Функция определения конца файла?
-
Функция пропуска части символов?
-
Как считать следующий символ в потоке не извлекая его?
-
Как вернуть обратно считанный символ?
-
Как принудительно записать данные из буфера в файл? Когда рекомендуется это делать?
-
Функции произвольного доступа к файлу?
-
О чем надо помнить применяя эти функции к текстовым файлам?
-
Как определить текущую позицию курсоров доступа к файлу?
-
Как получить информацию о статусе ввода / вывода?(2)
-
Как сбросить флаги ошибок?
-
Оператор определения типа объекта и его заголовок?
-
Функции – члены type_info?
-
Важное ограничение на typeid() в связи с полиморфизмом?
-
? Разыменованный указатель.
-
Можно ли применять typeid() к ссылкам?
-
Как проверить является ли объект таким-то типом?
-
Применение typeid() к шаблонным классам?
-
5 операторов приведения типов?
-
? оператор динамического приведения типов?
-
Требование к его результирующему типу?
-
Для приведения каких типов он предназначен?
-
Как проверить успешность dynamic_cast?
-
Тип исключительной ситуации при typeid и dynamic_cast?
-
Какие типы к каким приводятся dynamic_cast-ом?
-
Приведение типов с typeid и dynamic_cast?
-
Можно ли использовать dynamic_cast для шаблонных классов?
-
Можно ли привести T* к T*?
-
Как заместить const & volatile? Пример? Пример с ссылкой?
-
Оператор для неполиморфного приведения?
-
Проверяет ли он приведение типов?
-
Как привести разные типы данных?
-
Общий вид объявления пространства имен?
-
2 способа обращения к данным из пространства имен вне его?
-
Если создать объект класса namespace_name::some_class, нужно ли при его использовании ставить область видимости?
-
2 варианта использования using?
-
?Неименованное пространство имен. Синтаксис?
-
Зачем оно нужно?
-
Можно ли разделить пространство имен?
-
Пример?
-
Где можно объявлять пространство имен?
-
Пример использования вложенного пространства имен?
-
Как включить только часть функций из std?
-
? Функция преобразования класса. Синтаксис?
-
Пример?
-
Можно ли задать несколько type()?
-
Как объявить константную функцию – член и в чем ее особенность?
-
Как разрешить ей изменять какой-либо член класса?
-
Функция volatile и ее особенности?
-
? Явные конструкторы. Синтаксис?
-
Как инициализировать константы и ссылки в конструкторе?
-
Как проинициализировать члены класса, имеющего только конструктор с аргументами, в другом, содержащем его классе?
-
Порядок создания и инициализации членов класса?
-
Как вставить код на ассемблере?
-
Спецификация связей функции? Синтаксис?
-
В каких местах ее можно объявлять?
-
Как связать с программой сразу несколько функций?
-
? Буферизованный ввод / вывод.
-
Заголовок для него?
-
Синтаксис ввода / вывода?
-
Как узнать сколько символов записано в массив?
-
Динамический массив вывода? Пример использования?
-
9 отличий С от С++?
-
? Контейнеры. 2 типа?
-
? Алгоритмы.
-
? Итераторы. 5 видов?
-
? Обратный итератор.
-
? Распределитель.
-
? Предикат. 2 вида? Специальная разновидность бинарных предикатов?
-
2 заголовка STL общего типа (для pair и для функторов)?
-
? Функторы. 15 экземпляров? Зачем они нужны?
-
Еще 2 вида функторов?
-
? Адаптер.
-
11 контейнеров? Заголовки для них?
-
Основные переопределенные типы контейнерных классов(12)?
-
4 конструктора vector? Пример использования?
-
Ограничение на объекты, хранящиеся в векторе?
-
Функции вектора?(20)
-
Пример вектора с использованием итератора?
-
На что указывает итератор возвращаемый end()?
-
В каком месте вставляет элемент insert?
-
Пример со вставкой и удалением?
-
Когда можно не перегружать операторы объектов для вектора?
-
Пример вектора с объектами?
-
4 конструктора списка?
-
6 операторов определенных в списке?
-
Основные функции – члены списка?(28)
-
Что должны иметь объекты, хранящиеся в списке?
-
Пример вставки одного списка с объектами в другой?
-
3 конструктора map?
-
6 операторов определенных в map?
-
Требования к объектам – ключам в map?
-
Основные функции map?(17)
-
? Pair.
-
Пример с map? Пример с make_pair?
-
Заголовок для алгоритмов?
-
Стандартные алгоритмы?
-
Алгоритмы подсчета элементов? (2) Примеры?
-
? remove_copy(). Пример?
-
? replace_copy(). Пример?
-
? reverse(). Пример?
-
? transform().Пример?
-
? negate(). Пример?
-
? divides().Пример?
-
Пример создания простого функтора?
-
2 биндера для связи аргументов функтора с определенными значениями?
-
Пример биндеров с remove_it?
-
2 негатора?
-
3 «за» string?
-
Главный «против»?
-
3 основных конструктора string?
-
12 операторов string?
-
Можно ли в выражениях смешивать string и строки?
-
2 варианта функции – члена string для присвоения строк?
-
2 варианта функции – члена string для добавления строк?
-
2 варианта функции – члена string для вставки строк?
-
2 варианта функции – члена string для замены строк?
-
Функция – член для удаления символов в string?
-
Функции – члены string для нахождения первого и последнего вхождения подстроки в строку?
-
Функции – члены string для сравнения строк?
-
Функции – члены string для создания С – строки?
-
Можно ли применять к string контейнерные функции?
-
Можно ли хранить string в контейнерах?
C++ -для чего нужен виртуальный деструктор -чем отличается вызов виртуального деструктора от обычной виртуальной функции -чем отличаются const char* ptr и char const *ptr -чем чреват выброс исключения из конструктора, деструктора -в чем потенциальная опасность конструктора копирования по умолчанию -чем отличаются операторы приведения типа static_cast, reinterpret_cast, dynamic_cast, const_cast -метод const. класс const. ключевое слово mutable. -как определить чисто виртуальную функцию, абстрактный базовый класс -как организовать освобождение ресурсов при выходе из функции/метода -как запретить создание объектов в куче -как предотвратить утечки памяти связанные с с забывчивостью вызывать Delete -как запретить удаление объекта класса -как запретить наследование от данного класса -что такое виртуальный базовый класс (виртуальное наследование) -что такое частичная специализация шаблона -для чего нужен виртуальный конструктор -как удалить массив объектов -в каких случаях вызывается конструктор копирования -что такое конструктор конверсии. ключевое слово explicit. -в каких случаях переменная класса должна быть проинициализирована в списке инициализации конструктора -когда класс должен иметь конструктор по умолчанию -когда можно вернуть из функции ссылку на локальный объект -почему в C++ нельзя реализовать автоматическую сборку мусора?
STL -Как выбрать подходящий для задачи STL-контейнер -Что такое функтор. Что такое алгоритм -Какие есть способы поиска в контейнерах -В чем разница между stack, queue и другими контейнерами -Что такое распределители (allocators)
COM и ATL -Что такое апартамент. В чем разница между однопоточным и многопоточным апартаментом. -Что такое суррогатный процесс -Как передать указатель на интерфейс из одного потока в другой в STA -Виды маршалинга , их достоинства и недостатки -Какие есть способы передачи массива структур в COM-сервер. -Передача блоков данных переменной длины. -Кто должен распределять и освобождать память при передаче строк BSTR -Как получить на клиенте данные из буфера, распределенного в COM-сервере -Как в ATL создать многопоточный объект (MTA) -Какой интерфейс в ATL используется для передачи клиенту информации об ошибках? -Как организовать передачу callback-вызовов от COM-сервера к клиенту ?
Win32 -Как распределяется доступная процессу память -Чем отличается семафор от мьютекса -Какие средства межпроцессной коммуникации вы знаете, их достоинства и недостатки? -Как создать единственный экземпляр приложения в памяти (singleton) -Как происходит создание отображаемого в память файла -Как передать процессу указатель на память распределенную в другом процессе -Как сигнализировать другому потоку о его завершении и как дождаться его завершения из вызывающего потока
Объектно-ориентированное проектирование -Что такое полиморфизм -Что такое is-a и has-a отношения -Знакомы ли вам паттерны проектирования
Базы данных -что такое нормализация -свойства 3-й нормальной формы -достоинства и недостатки нормализации -что такое ссылочная целостность -что такое первичный ключ, внешний ключ -в чем достоинства и недостатки использования триггеров -что такое транзакция. виды изоляции транзакций -разрешение конфликтов при одновременном изменении данных
Объясните разницу между понятиями виртуальная функция и виртуальное наследование . Объясните, чем отличаются глобальные статические функции от статических функций, членов классов. Что общего, и чем обычно отличаются реализации конструкторов копирования, инициализации и перегруженной операции присваивания? Сравните 2 способа перегрузки операций: как метод класса и как внешнюю функцию-друг . Как создать в классе виртуальные конструкторы и деструктор? Может ли шаблонный (темплэйтный) класс быть абстрактным? Почему? В чем специфика перегрузки операций "sizeof", "typeid", "new" и "delete"? Чем она вызвана? Сравните особенности перегрузки операций "()" и "[]". Дайте развернутое сравнение работы со строками в стиле С (char*) и С++ (string). Дайте развернутое сравнение работы с динамической памятью в С и С++. Дайте развернутое сравнение стандартных средств ввода-вывода в С и С++. Что означает оператор throw без параметра? Расскажите, какие бывают итераторы и чем они отличаются. В чем различие между модификаторами register, const и volatile? Как написать функцию, принимающую заранее неизвестное число аргументов? В чем разница между конструкциями "extern" и "extern "C""? В чем, в рамках традиционного С++, различие между using и include? Сравните использование макросов, inline-функций и template-функций. Как грамотно организовать нетривиальную сортировку средствами стандартных библиотек С и С++ (сравните подходы)? Расскажите, что и как нужно сделать, что бы объекты написанного Вами класса можно было помещать в cout и читать из cin? Сравните различные формы операций приведения типа (в стиле С и в стиле С++). Расскажите о перегрузке этих операций. У каждого класса есть некоторые особые функции-члены, вызовы которых могут вставляться компилятором в код без явного на то указания программиста. Перечислите такие функции, члены и случаи, когда могут возникать неявные вызовы. Как задать значения аргументов функций по умолчанию? Каковы плюсы и минусы использования этой возможности С++? Каковы ее альтернативы? При написании оператора catch мы можем в качестве типа его аргумента написать непосредственно тип исключения, указатель на тип исключения либо ссылку на тип исключения. Сравните эти подходы. В каком порядке вычисляются аргументы функции при ее вызове: слева направо, справа налево или еще как-нибудь? Например, в каком порядке будут вычислены аргументы в следующем примере: f(5+I, ++I); ? Если при создании переменной программист ее явно не инициализировал, то, в некоторых случаях, компилятор сам даст ей некое, заранее известное начальное значение, а в некоторых случаях начальное значение будет непредсказуемо. От чего это зависит? От чего зависит порядок создания (последовательность вызова конструкторов) глобальных переменных? Какие практические выводы из этого следуют? Есть код: f(){return 3.5;} ... double d = f() Чему равно значение d ? Почему? Объясните разницу между понятиями "анонимное пространство имен" и "анонимное перечисление". Что произойдет, если исключение будет выброшено изнутри конструктора? Что из себя представляет и для чего применяется специализация шаблонов? В чем специфика применения операции delete к указателям на функции? Что такое и как используется this ? Для чего применяется предварительное объявление (forward declaration) классов? Какие директивы препроцессора обычно используются для предотвращения повторного включения заголовочного файла? Какие конструкции для организации ветвления предоставляет программистам С++? Какие конструкции для организации циклов предоставляет программистам С++? Что такое полиморфизм? Наличие какие конструкций в С++ позволяет утверждать, что этот язык поддерживает полиморфизм? Для чего используется полиморфизм? Что такое lvalue ? Для чего в C++ используется ключевое слово finaly ? Сравните операторы continue и break. Что такое и для чего нужны триграфы? В чем отличие и что общее в специфике перегрузки конструкторов и деструкторов? Что такое и как используется анонимное объединение? Можно ли в С++ (если да — то как) написать такой класс, от которого нельзя пронаследовать в дальнейшем никакой другой класс? Даны два класса, один из которых является наследником от второго. Напишите, как должны выглядеть конструкторы копирования-инициализации для этих классов (составьте пример). В чем специфика операций || и && ? В чем специфика перегрузки этих операций? Сравните понятия "статическая переменная" и "статическая переменная — член класса". В чем опасность использования макросов? Приведите примеры. Сравните операторы throw и return. Как инициализировать переменную, являющуюся приватным статическим членом класса? Для чего нужен и как используется класс auto_ptr ?