C++ – відома та улюблена мова програмування програмістів. Він досі актуальний, як і в середині 80-х. Як універсальна та об'єктно-орієнтована мова програмування широко використовується переважно щоразу під час кодування. Як наслідок, деякі робочі посади вимагають вільного володіння C++. Він використовується провідними ІТ-компаніями, такими як Evernote, LinkedIn, Microsoft, Opera, NASA , і Мета завдяки його надійності, продуктивності та широкому діапазону параметрів, у яких його можна використовувати. Отже, щоб потрапити в ці компанії, ви повинні бути досконалими в них 50 найпопулярніших запитань на співбесіді з C++ що може змусити вас здаватися експертом перед рекрутерами.

Щоб підготувати вас до співбесіди, ми підготували 50 найкращих запитань на співбесіді щодо C++ початківець, середній та досвідчений які ви обов’язково повинні пройти, щоб потрапити до провідних МНК.
Питання для співбесіди з C++ для новачків
1. Що таке C++? Які переваги C++?
C++ — це об’єктно-орієнтована мова програмування, яка була введена, щоб подолати юрисдикції, де не вистачало C. Під об'єктно-орієнтованим ми маємо на увазі, що він працює з концепцією поліморфізм , успадкування , абстракція , інкапсуляція , об'єкт і клас .
Переваги C++ :
- C++ — це мова ООП, що означає, що дані розглядаються як об’єкти.
- C++ є багатопарадигмальною мовою; Простими словами, це означає, що ми можемо запрограмувати логіку, структуру та процедуру програми.
- Керування пам’яттю є ключовою функцією C++, оскільки воно забезпечує динамічний розподіл пам’яті
- Це мова програмування середнього рівня, що означає, що вона може розробляти ігри, настільні програми, драйвери та ядра
Щоб прочитати більше, зверніться до статті – Які переваги C++?
2. Які різні типи даних присутні в C++?

Різні типи типів даних у C++
Для отримання додаткової інформації див ' std’ також відомий як стандартний або його можна інтерпретувати як простір імен. Команда використання простору імен std повідомляє компілятору додати все під std простір імен і прищеплювати їх у глобальний простір імен . Все це впровадження глобального простору імен приносить нам користь cout і прийом їжі без використання std::_operator_.
Для отримання додаткової інформації див простір імен і станд .
4. Що таке посилання в C++?
Коли змінна описується як посилання, вона стає псевдонімом уже існуючої змінної. Простіше кажучи, змінна, на яку посилається, — це інша змінна з іменем існуючої змінної, пам’ятаючи, що зміни, зроблені в змінній посилання, будуть відображені у вже існуючій змінній. Посилальній змінній передує a '&' символ.
Синтаксис:
int GFG = 10; // reference variable int& ref = GFG;>
Для отримання додаткової інформації див посилання на C++
5. Що ви маєте на увазі під викликом за значенням і викликом за посиланням?
У цій мові програмування для виклику функції є 2 методи: Виклик за значенням і Телефонуйте за довідкою
Виклик за значенням | Телефонуйте за довідкою |
|---|---|
| Передається копія змінної. | Сама змінна передається фундаментально. |
| Виклик функції шляхом надсилання значень шляхом копіювання змінних. | Виклик функції шляхом надсилання адреси переданої змінної. |
| Зміни, зроблені у функції, ніколи не відображаються за межами функції на змінній. Коротше кажучи, вихідне значення ніколи не змінюється у Call by Value. | Зміни, внесені у функції, можна побачити за межами функції на переданій функції. Коротше кажучи, вихідне значення змінено у Call by reference. |
| Передані фактичні та формальні параметри зберігаються в різних місцях пам'яті. Таким чином, для виклику за значенням не вистачить пам’яті | Передані фактичні та формальні параметри зберігаються в одному місці пам’яті. Таким чином, зробити виклик за посиланням трохи більш ефективним для використання пам’яті. |
Для отримання інформації зверніться до різниця між викликом за значенням і викликом за посиланням
6. Визначте маркер у C++
Маркер — це найменший окремий елемент програми, який розуміє компілятор. Токен містить наступне:
- Ключові слова – які мають особливе значення для компілятора
- Ідентифікатори – Які мають унікальну цінність/ідентичність
- Константи – Які ніколи не змінюють свою цінність протягом усієї програми
- рядки – Містить однорідну послідовність даних
- Спеціальні символи – Вони мають якесь особливе значення і не можуть використовуватися з іншою метою; наприклад: [] () {}, ; * = #
- Оператори – Хто виконує операції над операндом
Для отримання додаткової інформації див Токени в C++
7. Яка різниця між C і C++?
C | C++ |
|---|---|
| Це процедурна мова програмування. Простіше кажучи, він не підтримує класи та об’єкти | Це суміш як процедурних, так і об'єктно-орієнтованих мов програмування. Простими словами, він підтримує класи та об'єкти. |
| Він не підтримує жодних концепцій ООП, таких як поліморфізм, абстракція даних, інкапсуляція, класи та об’єкти. | Він підтримує всі концепції даних |
| Він не підтримує перевантаження функцій і операторів | Він підтримує перевантаження функцій і операторів відповідно |
| Це мова, керована функціями | Це об’єктно-керована мова |
Для отримання додаткової інформації див Різниця між C і C++
8. Яка різниця між структурою та класом?
Структура | Клас |
|---|---|
| Члени структури за замовчуванням завжди є публічними | Члени класу можуть перебувати в приватному, захищеному та публічному режимах. |
| Структури мають тип значення. Вони зберігають цінність лише в пам’яті. | Класи еталонного типу. Він містить посилання на об’єкт у пам’яті. |
| Пам'ять у структурах зберігається у вигляді стеків | Пам'ять у класах зберігається у вигляді куп. |
Для отримання додаткової інформації зверніться до Різниця між структурою та класом.
9. Яка різниця між посиланням і покажчиком?
довідка вказівники в c | покажчик |
|---|---|
| Значення посилання не можна перепризначити | Значення вказівника можна перепризначити |
| Це ніколи не може втримати a нуль значення, оскільки йому потрібно існуюче значення, щоб стати псевдонімом | Він може тримати або вказувати на a нуль значення і називатися a nullptr або нульовий покажчик |
| Він не може працювати з масивами | Він може працювати з масивами |
| Для доступу до членів класу/структури використовується « . ' | Для доступу до членів класу/структури використовується « -> ' |
| До посилання в пам’яті можна легко отримати доступ або його можна використовувати безпосередньо | Розташування вказівника в пам’яті не може бути легко доступним, оскільки ми повинні використовувати розіменування ‘ * ' |
Для отримання додаткової інформації зверніться до Різниця між посиланням і покажчиком
10. Яка різниця між перевантаженням функції та перевантаженням оператора?
Перевантаження функцій | Перевантаження оператора |
|---|---|
| По суті, це визначення функції багатьма способами, так що існує багато способів її виклику, або, кажучи простою мовою, у вас є кілька версій однієї функції | По суті, це практика надання особливого значення існуючому значенню оператора або, простими словами, перевизначення попереднього значення. |
| Параметризовані функції є хорошим прикладом перевантаження функцій, оскільки просто змінивши аргумент або параметр функції, ви робите її корисною для різних цілей | Поліморфізм є хорошим прикладом перевантаження оператора, оскільки об’єкт класу розподілу може використовуватися та викликатися різними класами для різних цілей |
Приклад перевантаження функції:
| Приклад перевантаження оператора:
|
Для отримання додаткової інформації див Перевантаження оператора і Перевантаження функцій
11. Чим відрізняється масив від списку?
Масиви | списки |
|---|---|
| Масив — це безперервні ділянки пам’яті однорідних типів даних, які зберігаються у фіксованому місці або розмірі. | Списки - це класичні окремі елементи, які пов'язані або з'єднані один з одним за допомогою покажчиків і не мають фіксованого розміру. |
| Масиви статичні за своєю природою. | Списки мають динамічний характер |
| Використовує менше пам’яті, ніж зв’язані списки. | Використовує більше пам’яті, оскільки має зберігати значення та розташування вказівника в пам’яті |
Для отримання додаткової інформації див Масиви проти списку
12. Яка різниця між циклом while і циклом do-while?
Цикл while | Цикл do-while |
|---|---|
| Цикл while також називається циклом із керуванням входом | Цикл do-while називається циклом керування виходом |
| Якщо умова не виконується, оператори всередині циклу не виконуватимуться | Навіть якщо умова не виконується, оператори всередині циклу виконуватимуться принаймні один раз |
приклад циклу while: поки (умова) {оператори для виконання;}; | приклад циклу do-while: зробити { заяви для виконання; } while(умова або вираз); |
Для отримання додаткової інформації зверніться до Різниця між циклом while і do-while
13. Обговоріть різницю між префіксом і постфіксом?
префікс | постфікс |
|---|---|
| Це просто означає розміщення оператора перед операндом | Це просто означає розміщення оператора після операнда |
| Це виконується раніше '; ' | Він виконується самостійно після '; ' |
| Асоціативність префікса ++ справа наліво | Асоціативність постфікса ++ зліва направо |
Для отримання додаткової інформації зверніться до Різниця між префіксом і постфіксом
14. Яка різниця між new і malloc()?
новий java додати до масиву | malloc() |
|---|---|
| new — це оператор, який виконує операцію | malloc — це функція, яка повертає та приймає значення |
| new викликає конструктори | malloc не може викликати конструктор |
| new швидше, ніж malloc, оскільки це оператор | malloc повільніше, ніж new, оскільки це функція |
| new повертає точний тип даних | malloc повертає void* |
Для отримання додаткової інформації див Різниця між new і malloc()
15. Яка різниця між віртуальними функціями та чистими віртуальними функціями?
Віртуальна функція | Чиста віртуальна функція |
|---|---|
| Віртуальна функція — це функція-член базового класу, яку можна перевизначити в іншому похідному класі. | Чиста віртуальна функція — це функція-член базового класу, яка оголошується лише в базовому класі та визначається в похідному класі, щоб запобігти тому, щоб вона стала абстрактним класом. |
| Віртуальна функція має визначення у відповідному базовому класі. | У Pure Virtual Function немає визначення, і вона ініціалізується чистим специфікатором (= 0). |
| Базовий клас має віртуальну функцію, яка може бути представлена або створена; Простими словами, його об'єкт можна зробити. | Базовий клас, що має чисту віртуальну функцію, стає абстрактним, який не може бути представлений або створений; Простими словами, це означає, що його об’єкт неможливо створити. |
Для отримання додаткової інформації зверніться до Різниця між віртуальними функціями та чисто віртуальними функціями
16. Що таке класи та об’єкти в C++?
Клас — це визначений користувачем тип даних, у якому всі функції-члени та члени даних створені спеціально відповідно до вимог і вимог, на додаток до яких можна отримати доступ за допомогою об'єкт . Щоб оголосити тип даних, визначений користувачем, ми використовуємо ключове слово клас.
Об’єкт — це екземпляр класу та сутності зі значенням і станом; Простіше кажучи, він використовується як каталізатор або для представлення члена класу. Він може містити різні параметри або не містити жодного.
Примітка: Клас — це проект, який визначає функції, які використовує об’єкт.
Для отримання додаткової інформації зверніться до цього Що таке класи та об'єкти
17. Що таке перевизначення функції?
Якщо функція з такою ж назвою, тими самими аргументами або параметрами та тим самим типом повернення, яка вже присутня/оголошена в базовому класі, використовується в похідному класі, це називається перевизначенням функції. Це приклад поліморфізму під час виконання або пізнього зв’язування, що означає, що перевизначена функція буде виконана під час виконання.
Для отримання додаткової інформації див Перевизначення функцій у C++
18. Які різні концепції ООП існують у C++?
- Заняття : Це визначений користувачем тип даних
- Об'єкти : Це екземпляр класу
- Абстракція: Це техніка показу лише необхідних деталей
- Інкапсуляція: Обгортка даних в єдиний блок
- Спадок: Здатність класу отримувати властивості та характеристики з іншого класу
- Поліморфізм: Поліморфізм відомий як багато форм одного і того ж
Для отримання додаткової інформації див Різні концепції ООП у C++
19. Поясніть спадковість
Здатність або здатність класу отримувати властивості та характеристики з іншого класу відома як успадкування. Простіше кажучи, це система або техніка повторного використання та розширення існуючих класів без їх модифікації.
Для отримання додаткової інформації див Спадщина
20. Коли слід використовувати множинне успадкування?
Множинне успадкування означає, що похідний клас може успадкувати два або більше базових/батьківських класів. Це корисно, коли похідному класу потрібно об’єднати численні атрибути/контракти та успадкувати частину або всю реалізацію від цих атрибутів/контрактів. Для прикладу з реального життя розглянемо своїх батьків, де батько А — це ваш ТАТО, батько Б — ваша МАМА, а дитина С — це ви.

Множинне успадкування
Для отримання додаткової інформації див Множинне успадкування .
21. Що таке віртуальне успадкування?
Віртуальне успадкування — це техніка, яка гарантує, що лише одна копія змінних-членів базового класу успадковується класами, похідними від онуків. Або, кажучи простою мовою, віртуальне успадкування використовується, коли ми маємо справу з ситуацією множинного успадкування, але хочемо запобігти появі кількох екземплярів одного класу в ієрархії успадкування.
22. Що таке поліморфізм у C++?
Поліморфізм відомий як багато форм одного і того ж. Простими словами, можна сказати, що поліморфізм — це здатність відображати функцію-член у кількох формах залежно від типу об’єкта, який їх викликає.
Іншими словами, ми також можемо сказати, що чоловік може бути для когось працівником, для когось сином, для когось батьком і для когось чоловіком; ось як поліморфізм може бути спроектований у реальному житті.
Існує 2 види поліморфізму:
- Поліморфізм часу компіляції
- Перевантаження функцій
- Перевантаження оператора
- Поліморфізм часу виконання
- Перевизначення функції
- Віртуальна функція
Щоб дізнатися більше про це, зверніться до Поліморфізм
23. Які типи поліморфізму існують у C++?
Існує 2 типи поліморфізму
Поліморфізм часу компіляції або статичне зв’язування
Цей тип поліморфізму досягається під час компіляції програми, що призводить до того, що вона працює трохи швидше, ніж час виконання. Крім того, у цьому не задіяна спадщина. Він складається з 2 додаткові техніки :
Перевантаження функцій: Коли є кілька функцій з однаковою назвою, але різними параметрами, це називається перевантаженням функції.
C++ // same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>
Перевантаження оператора: По суті, це практика надання особливого значення існуючому значенню оператора або, простими словами, перевизначення попереднього значення
class GFG { // private and other modes statements public returnType operator symbol(arguments){ statements } statements };>
Поліморфізм під час виконання або пізнє зв’язування
Поліморфізм під час виконання має місце, коли функції викликаються під час виконання.
Перевизначення функції: Перевизначення функції відбувається, коли функція-член базового класу перевизначається в похідному класі з тими самими аргументами та типом повернення.
// C++ program to demonstrate // Function overriding #include using namespace std; class GFG { public: virtual void display() { cout << 'Function of base class' << endl; } }; class derived_GFG : public GFG { public: void display() { cout << 'Function of derived class' << endl; } }; int main() { derived_GFG dg; dg.display(); return 0; }> Вихід:
Function of derived class>
Для отримання додаткової інформації див Різні типи поліморфізму
24. Порівняйте поліморфізм під час компіляції та поліморфізм під час виконання
Поліморфізм під час компіляції аналоговий зв'язок | Поліморфізм виконання |
|---|---|
| Його також називають статичним зв’язуванням і раннім зв’язуванням. | Його також називають динамічним зв’язуванням і пізнім зв’язуванням. |
| Це швидко, оскільки виконання відомо на ранній стадії компіляції. | Це повільно порівняно з часом компіляції, оскільки виконання відомо під час виконання. |
| Це досягається шляхом перевантаження функцій і операторів. | Це досягається за допомогою віртуальних функцій і перевизначення функцій. |
Для отримання додаткової інформації див Поліморфізм під час компіляції та поліморфізм під час виконання
25. Поясніть конструктор мовою C++.
Конструктор — це особливий тип функції-члена класу, ім’я якого збігається з ім’ям класу, яким він викликається, і ініціалізує значення для об’єкта класу.
Існує 3 типи конструкторів:
A. Конструктор за замовчуванням: Це найпростіший тип конструктора, який не приймає аргументів або параметрів. Навіть якщо він не викликається, компілятор викликає його автоматично під час створення об’єкта.
приклад:
C++ class Class_name { public: Class_name() { cout << 'I am a default constructor'; } };>
B. Параметризований конструктор: Це тип конструктора, який приймає аргументи або параметри. Його потрібно викликати явно, передаючи значення в аргументах, оскільки ці аргументи допомагають ініціалізувати об’єкт під час його створення. Він також має таку саму назву, як і клас.
Крім того, він використовується для перевантаження конструкторів.
приклад:
C++ // CPP program to demonstrate // parameterized constructors #include using namespace std; class GFG { private: int x, y; public: // Parameterized Constructor GFG(int x1, int y1) { x = x1; y = y1; } int getX() { return x; } int getY() { return y; } }; int main() { // Constructor called GFG G(10, 15); // Access values assigned by constructor cout << 'G.x = ' << G.getX() << ', G.y = ' << G.getY(); return 0; }> Вихід
G.x = 10, G.y = 15>
C. Конструктор копіювання: Конструктор копіювання — це функція-член, яка ініціалізує об’єкт за допомогою іншого об’єкта того самого класу. Крім того, конструктор Copy приймає посилання на об’єкт того самого класу як аргумент.
приклад:
C++ Sample(Sample& t) { id = t.id; }>
Для отримання додаткової інформації див Конструктори
26. Що таке деструктори в C++?
Деструктори — це члени функцій у класі, які видаляють об’єкт, коли об’єкт класу виходить за межі області видимості. Деструктори мають те саме ім’я, що й клас, перед яким стоїть знак тильда (~). Крім того, деструктори слідують за a вниз до верху підхід, на відміну від конструкторів, які слідують зверху вниз.
Синтаксис:
~constructor_name(); // tilde sign signifies that it is a destructor>
Для отримання додаткової інформації див Руйнівник .
27. Що таке віртуальний деструктор?
Під час знищення екземплярів або об’єктів похідного класу за допомогою об’єкта покажчика базового класу викликається віртуальний деструктор, щоб звільнити простір пам’яті, виділений об’єктом або екземпляром похідного класу.
Віртуальний деструктор гарантує, що спочатку викликається деструктор похідного класу. Потім викликається деструктор базового класу, щоб звільнити простір, зайнятий обома деструкторами в класі успадкування, що рятує нас від витоку пам’яті. Рекомендується робити ваш деструктор віртуальним щоразу, коли ваш клас є поліморфним.
Для отримання додаткової інформації див Віртуальний руйнівник
28. Чи можливе перевантаження деструктора? Якщо так, то поясніть, а якщо ні, то чому?
Відповідь проста НІ ми не можемо перевантажувати деструктор. Обов’язковим є лише деструктор для кожного класу в C++. Також слід зазначити, що деструктор не приймає аргументів і не має параметра, який може допомогти перевантажити.
Питання для інтерв’ю C++ – середній рівень
29. Які операції дозволені над покажчиками?
Покажчики — це змінні, які використовуються для зберігання адреси розташування іншої змінної. Операції, які дозволені для покажчика:
- Збільшення/зменшення покажчика
- Додавання та віднімання цілого числа до покажчика
- Порівняння покажчиків одного типу
30. Яке призначення видалити оператор?
Оператор delete використовується для видалення/видалення всіх характеристик/властивостей об’єкта шляхом звільнення його пам’яті; крім того, в кінці він повертає true або false. Простіше кажучи, він знищує або вилучає об’єкти-масиви та об’єкти, що не є масивами (вказівники), створені новими виразами.
C++ int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>
Для отримання додаткової інформації див Видалити оператор
31. Чим delete [] відрізняється від delete?
видалити[] | видалити |
|---|---|
| Використовується для видалення цілого масиву | Він використовується для видалення лише одного покажчика |
| Використовується для видалення об'єктів новий []; Таким чином, можна сказати, що видалити[] використовується для видалення масиву об'єктів | Використовується для видалення об'єктів новий; Таким чином, можна сказати, що видалити використовується для видалення окремого об'єкта |
| Він може викликати скільки завгодно деструкторів | Він може викликати деструктор класу лише один раз |
32. Що ви знаєте про клас друга та функцію друга?
Другий клас — це клас, який може мати доступ як до захищених, так і до закритих змінних класів, де він оголошений як друг.
Приклад класу друзів:
C++ class Class_1st { // ClassB is a friend class of ClassA friend class Class_2nd; statements; } class Class_2nd { statements; }>
Функція друга — це функція, яка використовується для доступу до приватних, захищених і публічних членів даних або функцій-членів інших класів. Він оголошується за допомогою ключового слова friend. Перевага функції друга полягає в тому, що вона не прив’язана до області класу, і коли вона оголошена в класі, крім того, вона не може бути викликана об’єктом класу; тому його можна викликати іншими функціями. Враховуючи всі зазначені моменти, можна сказати, що функція друга є глобальною функцією .
Приклад функції друга:
C++ class GFG { statements; friend dataype function_Name(arguments); statements; } OR class GFG { statements' friend int divide(10, 5); statements; }>
Для отримання додаткової інформації зверніться до функція друга та клас друга
33. Що таке помилка переповнення?
Помилка переповнення виникає, коли число завелике для обробки типу даних. Простіше кажучи, це тип помилки, який дійсний для визначеного, але перевищує використовуваний визначений діапазон, де він повинен збігатися/лежати.
Наприклад, діапазон типу даних int є –2 147 483 648 до 2,147,483,647 і якщо ми оголосимо змінну розміру 2,247,483,648 це спричинить помилку переповнення.
34. Що робить оператор Scope Resolution?
Оператор розділення області позначається символом « :: символ. Так само, як і його назва, цей оператор усуває бар’єр області видимості в програмі. Оператор розділення області використовується для посилання на функцію-член або глобальну змінну поза їхньою областю, крім того, до якої він також може отримати доступ до прихованої змінної або функції в програмі.
Scope Resolution використовується для багатьох завдань:
- Щоб отримати доступ до глобальної змінної, якщо існує локальна змінна з таким самим ім’ям
- Щоб визначити функцію поза класом
- У разі множинного успадкування
- Для простору імен
Для отримання додаткової інформації див Оператор дозволу області
35. Що таке модифікатори доступу C++?
Обмеження доступу, визначене для членів класу (незалежно від того, чи це член-функція, або член даних), відоме як модифікатори/специфікатори доступу.
Модифікатори доступу бувають 3 типів:
- Приватний – До нього неможливо ані отримати доступ, ані переглянути його поза класом
- Захищений – До нього можна отримати доступ тоді і тільки якщо засіб доступу є похідним класом
- Громадський – До нього можна отримати доступ або переглянути його поза класом
Для отримання додаткової інформації див Модифікатори доступу
36. Чи можна скомпілювати програму без функції main?
Так, абсолютно можливо скомпілювати програму без main(). Наприклад, використовуйте макроси, які визначають основний
C++ // C++ program to demonstrate the // a program without main() #include #define fun main int fun(void) { printf('Geeksforgeeks'); return 0; }> Для отримання додаткової інформації див Чи можна скомпілювати програму без функції main
37. Що таке STL?
STL відомий як стандартна бібліотека шаблонів, це бібліотека, яка надає 4 компоненти, такі як контейнер, алгоритми та ітератори.

C++ STL
Для отримання додаткової інформації див STL на C++
38. Визначте вбудовану функцію. Чи можемо ми мати рекурсивну вбудовану функцію в C++?
Вбудована функція — це форма запиту, а не наказ компілятору, що призводить до вбудовування нашої функції в тіло головної функції. Вбудована функція може стати накладною, якщо час виконання функції менший за час перемикання від функції, що викликає, до функції, що викликається. Щоб зробити функцію вбудованою, використовуйте ключове слово в лінію перед і визначте функцію до того, як буде зроблено будь-який виклик функції.

Пояснення вбудованої функції
Синтаксис:
inline data_type function_name() { Body; }>Відповідь така Немає; Він не може бути рекурсивним.
заблокувати рекламу на youtube android
Вбудована функція не може бути рекурсивною, тому що у випадку вбудованої функції код просто розміщується в позиції, звідки він викликається, і не підтримує частину інформації в стеку, яка необхідна для рекурсії.
Крім того, якщо ви напишете вбудоване ключове слово перед рекурсивною функцією, компілятор автоматично проігнорує його, оскільки вбудоване слово сприймається компілятором лише як пропозиція.
Для отримання додаткової інформації див Вбудована функція
39. Що таке абстрактний клас і коли він використовується?
Абстрактний клас — це клас, спеціально розроблений для використання як базовий клас. Абстрактний клас містить принаймні одну чисту віртуальну функцію. Ви оголошуєте чисту віртуальну функцію за допомогою a чистий специфікатор (= 0) в оголошенні віртуальної функції-члена в оголошенні класу
Ви не можете використовувати абстрактний клас як тип параметра, тип повернення функції або тип явного перетворення, а також не можете оголосити об’єкт абстрактного класу. Однак його можна використовувати для оголошення покажчиків і посилань на абстрактний клас.
Абстрактний клас використовується, якщо ви хочете забезпечити спільну, реалізовану функціональність серед усіх реалізацій компонента. Абстрактні класи дозволять вам частково реалізувати ваш клас, тоді як інтерфейси не матимуть жодної реалізації для будь-яких членів. Простіше кажучи, абстрактні класи добре підходять, якщо ви хочете надати своїм дітям деталі реалізації, але не хочете, щоб екземпляр вашого класу створювався безпосередньо.
40. Що таке статичні члени даних і статичні функції-члени?
Статичний член даних класу є звичайним членом даних, але йому передує ключове слово static. Він виконується перед main() у програмі та ініціалізується рівним 0, коли створюється перший об’єкт класу. Він видимий лише для визначеного класу, але його область дії триває.
Синтаксис:
static Data_Type Data_Member;>
Статична функція-член — це функція-член, яка використовується для доступу до інших статичних елементів даних або інших статичних функцій-членів. Він також визначається за допомогою ключового слова static. Ми можемо отримати доступ до статичної функції-члена за допомогою імені класу або об’єктів класу.
Синтаксис:
classname::function name(parameter);>
Питання для інтерв’ю C++ – експертний рівень
41. Яке основне використання ключового слова Volatile?
Так само, як і назва, все може змінитися раптово та неочікувано; Тому він використовується для інформування компілятора про те, що значення може змінитися будь-коли. Крім того, ключове слово volatile не дозволяє компілятору виконувати оптимізацію коду. Його було призначено для використання під час взаємодії з апаратним забезпеченням із відображенням пам’яті, обробниками сигналів та інструкціями машинного коду.
Для отримання додаткової інформації зверніться до цього Летючі
42. Визначте клас зберігання в C++ і назвіть деякі
Клас зберігання використовується для визначення характеристик (часу життя та видимості) змінної або функції. Ці функції зазвичай допомагають відстежувати існування змінної під час виконання програми.
Синтаксис:
storage_class var_data_type var_name;>
Деякі типи класів зберігання:

Приклади класу зберігання
Для отримання додаткової інформації див Клас зберігання
43. Що таке змінний специфікатор класу зберігання? Як їх можна використовувати?
Так само, як і його назва, специфікатор класу mutable storage використовується лише для члена даних класу, щоб зробити його змінним, навіть якщо цей член є частиною об’єкта, оголошеного як const. Статичні, константні або посилальні члени не можуть використовувати змінний специфікатор. Коли ми оголошуємо функцію як const, цей покажчик, переданий функції, стає const.
44. Визначте змінну Block scope.
Отже, область дії змінної — це область, де змінна доступна. Є дві області дії: глобальна та блочна або локальна.
Змінна області видимості блоку також відома як локальна змінна області видимості. Змінна, визначена всередині функції (наприклад, main) або всередині блоку (як цикли та блоки if), є локальною змінною. Він може використовуватися ТІЛЬКИ всередині тієї конкретної функції/блоку, в якому він оголошений. блочна змінна не буде доступна поза блоком, навіть якщо блок знаходиться всередині функції.
Для отримання додаткової інформації див Область змінної
тонкий алгоритм
45. Яку функцію виконує ключове слово Auto?
Ключове слово auto можна використовувати для оголошення змінної зі складним типом простим способом. Ви можете використовувати auto для оголошення змінної, якщо фраза ініціалізації містить шаблони, покажчики на функції, посилання на члени тощо. Завдяки можливостям виведення типу ми можемо витрачати менше часу на написання речей, які компілятор уже знає. Оскільки всі типи виводяться лише на етапі компіляції, час компіляції трохи збільшується, але це не впливає на час виконання програми.
Для отримання додаткової інформації див Автомобілі на C++
46. Визначте простір імен у C++.
Простори імен дозволяють нам організовувати іменовані елементи, які інакше мали б глобальну область видимості, у менші області, дозволяючи нам надавати їм область простору імен. Це дозволяє організовувати частини програми в окремі логічні області з іменами. Простір імен надає місце для визначення або оголошення ідентифікаторів, таких як змінні, методи та класи.
Або ми можемо сказати, що простір імен — це декларативна зона, яка надає ідентифікаторам (іменам типів, функцій, змінним тощо) область дії. Простори імен використовуються для впорядкування коду за логічними категоріями та для уникнення зіткнень імен, які можуть статися, якщо у вашій кодовій базі багато бібліотек.
Для отримання додаткової інформації див Простір імен у C++
47. Коли використовується тип повернення void()?
Ключове слово void, коли воно використовується як тип повернення функції, вказує, що функція не повертає значення. Коли використовується як список параметрів для функції, void вказує, що функція не приймає параметрів. Функції, що не повертають значення, також відомі як void-функції. Їх називають пустими, оскільки вони не призначені для повернення нічого. Правда, але лише частково. Ми не можемо повернути значення з функцій void, але ми можемо повернути щось. Хоча функції void не мають типу повернення, вони можуть повертати значення.
Для отримання додаткової інформації див Тип повернення Void .
48. Яка різниця між поверхневою копією та глибокою копією?
Неглибока копія | Глибока копія |
|---|---|
| У Shallow copy зберігається копія оригінального об’єкта, а остаточно копіюється лише посилальна адреса. Простіше кажучи, Shallow copy дублює якомога менше | У глибокій копії зберігаються як копія оригінального об’єкта, так і повторювані копії. Простіше кажучи, Deep copy дублює все |
| Неглибока копія колекції є копією структури колекції, а не елементів. Завдяки дрібній копії дві колекції тепер мають окремі елементи. | Глибока копія колекції — це дві колекції з дублюванням усіх елементів оригінальної колекції. |
| Неглибока копія швидше | Глибоке копіювання порівняно повільніше. |
Для отримання додаткової інформації див Неглибока копія VS глибока копія
49. Чи можна викликати віртуальну функцію з конструктора?
Так, ми можемо викликати віртуальну функцію з конструктора. Але це може викликати виключення перевизначення.
50. Що таке покажчики пустот?
Подібно до своєї назви, покажчик void — це покажчик, який не пов’язаний ні з чим або з жодним типом даних. Тим не менш, покажчик void може містити значення адреси будь-якого типу і може бути перетворений з одного типу даних в інший.
Для отримання додаткової інформації звертайтеся до Покажчик пустот у C++
Бонусне запитання:
Що ' це «вказівник у C++?
це pointer дозволяє кожному об'єкту мати доступ до власної адреси через основний покажчик. Усі функції члена приймають це покажчик як неявний аргумент. це покажчик може використовуватися для посилання на об’єкт виклику в межах функції-члена.
- це покажчик використовується для передачі об'єкта як параметра іншому методу.
- Кожен об’єкт отримує власну копію елемента даних.
- це покажчик використовується для оголошення індексаторів.
Для отримання додаткової інформації див це покажчик у C++