Термины

Термины языка c++ и программирования в общем

   POD   
    Plain old data — данные в стиле языка C, структуры и объединения (union). К POD относятся встроенные типы данных (int, double). В данных этого стиля можно попытаться посчитать смещение объектов относительно друг друга. Если же добавить, скажем, конструктор, или указать спецификатор доступа, такой объект становится объектом в стиле C++ и простая арифметика смещений к нему уже не применима.
POD структуры — хранилища. Объекты же — сложные структуры (указатели на таблицу виртуальных функций, данные о иерархии и т.д.), которые инициализируются в конструкторе и остаются неизменными на протяжении всей жизни объекта. В отличие от POD структур, объекты нельзя копировать побитово функцией memcpy.

   блочно-структурированный язык   
    Позволяет объявлять одни функции внутри других. C++ к таковым не относится.

   дробление объекта   
    Происходит при передаче объекта по значению в качестве аргумента в функцию, одновременно являющимся тем, что ожидает функция, и чем-то большим (иными словами — объектом производного класса, наследованного открыто (public)). Это как если функция ожидает объект типа Mammal, а мы передаём туда объект класса Dog. С оригинальной собакой ничего не произойдёт, однако создастся раздробленная копия объекта типа Mammal, в которую скопируются данные, относящиеся только к базовому классу, из объекта класса Dog.

   неожиданное поведение   
    Не фатальное поведение какого-либо свойства или семантики языка, которое может возникнуть в следствие непродуманности кода или непросвещённости программиста. Ничего хорошего ждать не стоит, но и последствия обычно обнаруживаются сразу (ещё на этапе первой отладки программного кода).

   неопределённое поведение   
    Стандарт гласит, что неизвестно досконально, что произойдёт с программой и операционной системой после возникновения неопределённого поведения, но ничего хорошего ждать не следует.
Программа может зависнуть, залезть не в свою область памяти, стереть файлы на диске (это не шутка). Может работать нормально ещё долгое время, а затем упасть в неожиданный момент.
Возникает:
— Когда ссылка теряет объект, псевдонимом которого является;
— Когда к не инициализированному указателю применяется delete или к указателю, к которому уже применяли delete и не инициализировали новым значением, либо не обнулили;
— Обращение через нулевой указатель, либо через указатель, ссылающийся на уже несуществующий объект.

   нисходящее приведение   
    Нисходящим приведением называют получение указателя или ссылки на производный класс из указателя или ссылки на базовый класс. Осуществить это можно операторами приведения dynamic_cast, static_cast, а также приведением в стиле C. Для восходящего приведения операторы не нужны — выполняется автоматически самим языком.

   обратный вызов (call-back)   
    Возможное действие, которое задаётся при инициализации и может быть вызвано в ответ на какое-либо событие. Реализуется с помощью указателей и ссылок на функции, а так же при помощи объектов-функций.

   разложение   
    При передаче массива как параметра в функцию, передаётся не весь массив, а только указатель на первый его элемент.