-
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.
-
В C++ структуры формально отличаются от классов лишь тем, что по умолчанию уровень доступа к членам класса и тип наследования у структуры публичные, а у класса — приватные.
Источник: Википедия.
-
Оператор приведения static_cast применяется для неполиморфного приведения типов на этапе компиляции программы. Отличие static_cast от приведения типов в стиле языка C состоит в том, что данный оператор приведения может отслеживать недопустимые преобразования, такие как приведение указателя к значению или наоборот (unsigned int к указателю на double не приведет), а также приведение указателей и ссылок разных типов считается корректным только, если это приведение вверх или вниз по одной иерархии наследования классов, либо это указатель на void. В случае фиксации отклонения от данных ограничений будет выдана ошибка при компиляции программы. При множественном наследовании static_cast может вернуть указатель не на исходный объект, а на его подобъект.
Источник: Хабр.
-
При вызове виртуальной функции из конструктора или деструктора класса будет вызван экземпляр функции этого класса. При вызове чистой виртуальной функции напрямую компилятор сообщит об этой ошибке. Если же вызвать через функцию-посредника данный, то это не замечено компилятором на этапе компиляции и это сработает во время исполнения программы. Если класс с чистой виртуальной функцией не определяет эту функцию, то в соответствующем месте виртуальной таблицы вызывается специальная функция, которая выводит на экран "Pure virtual function called" (или соответствующее сообщение) и затем завершает программу со сбоем.
Источник: Artima.
-
Notifications
You must be signed in to change notification settings - Fork 0
License
albrt-dev/cpp-interview-questions
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
No description, website, or topics provided.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published