Skip to content

albrt-dev/cpp-interview-questions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 

Repository files navigation

Вопросы к собеседованию C++

Вопросы

ВОПРОС
1 Сходства и различия между С и С++
2 В чем разница между структурой [struct] и классом [class]
3 Отличие static_cast от приведения типов в стиле языка C
4 Вызов чистой виртуальной функции [pure virtual function call] во время исполнения программы

Ответы

  1. Сходства и различия между С и С++

    C и C++ имеют схожий синтаксис; структуру кода одинакова; компиляция проектов аналогична; операторы и ключевые слова C также присутствуют в C++; базовая модель памяти обоих очень близка к аппаратной; присутствуют одни и те же определения стека, кучи, файловой области и статических переменных.

    C поддерживает процедурное программирование; C++ поддерживает как процедурное, так и объектно-ориентированное программирование. Данные и функции разделены в C и инкапсулируются вместе в C++. Перегрузка функций не используется в C, но используется в C++. Пространства имен отсутствуют в C, но используются в C++, чтобы избежать конфликт имен. Ссылочные переменные, виртуальные и дружественные функции, наследование, обработка исключений не поддерживаются в C, но присутствуют в C++. C предоставляет функции malloc() и calloc() для динамического выделения памяти и free() для освобождения памяти; C++ предоставляет оператор new для выделения памяти и оператор delete для освобождения памяти. Функции scanf() и printf() используются для ввода/вывода в C; потоки cin и cout используются для ввода/вывода в C++. В C нет строгой проверки типов; строгая проверка типов реализована в C++. В C расширение файла .c, в C++ расширение файла .cpp.

    Источник: GeeksforGeeks.

  2. В чем разница между структурой [struct] и классом [class]

    В C++ структуры формально отличаются от классов лишь тем, что по умолчанию уровень доступа к членам класса и тип наследования у структуры публичные, а у класса — приватные.

    Источник: Википедия.

  3. Отличие static_cast от приведения типов в стиле языка C

    Оператор приведения static_cast применяется для неполиморфного приведения типов на этапе компиляции программы. Отличие static_cast от приведения типов в стиле языка C состоит в том, что данный оператор приведения может отслеживать недопустимые преобразования, такие как приведение указателя к значению или наоборот (unsigned int к указателю на double не приведет), а также приведение указателей и ссылок разных типов считается корректным только, если это приведение вверх или вниз по одной иерархии наследования классов, либо это указатель на void. В случае фиксации отклонения от данных ограничений будет выдана ошибка при компиляции программы. При множественном наследовании static_cast может вернуть указатель не на исходный объект, а на его подобъект.

    Источник: Хабр.

  4. Вызов чистой виртуальной функции [pure virtual function call] во время исполнения программы

    При вызове виртуальной функции из конструктора или деструктора класса будет вызван экземпляр функции этого класса. При вызове чистой виртуальной функции напрямую компилятор сообщит об этой ошибке. Если же вызвать через функцию-посредника данный, то это не замечено компилятором на этапе компиляции и это сработает во время исполнения программы. Если класс с чистой виртуальной функцией не определяет эту функцию, то в соответствующем месте виртуальной таблицы вызывается специальная функция, которая выводит на экран "Pure virtual function called" (или соответствующее сообщение) и затем завершает программу со сбоем.

    Источник: Artima.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published