C++ – nevyhnutný a obľúbený programovací jazyk programátorov. Je stále aktuálne ako v polovici 80. rokov. Ako všeobecný a objektovo orientovaný programovací jazyk sa vo veľkej miere používa väčšinou pri kódovaní. Výsledkom je, že niektoré pracovné pozície vyžadujú, aby jednotlivci ovládali jazyk C++. Využívajú ho špičkové IT spoločnosti ako napr Evernote, LinkedIn, Microsoft, Opera, NASA , a Meta kvôli jeho spoľahlivosti, výkonu a širokému spektru nastavení, v ktorých ho možno použiť. Takže, aby ste sa dostali do týchto spoločností, musíte byť v nich dôkladní 50 najlepších otázok na pohovor v jazyku C++ vďaka čomu môžete pred personalistami pôsobiť ako expert.

Aby ste boli pripravení na rozhovor, priniesli sme 50 najlepších otázok na pohovor v C++ začiatočník, mierne pokročilý a skúsený ktorým musíte určite prejsť, aby ste sa umiestnili na popredných miestach nadnárodných spoločností.
Otázky na pohovor v C++ pre začiatočníkov
1. Čo je C++? Aké sú výhody C++?
C++ je objektovo orientovaný programovací jazyk, ktorý bol zavedený s cieľom prekonať jurisdikcie, kde C chýbalo. Objektovo orientovaným rozumieme, že pracuje s konceptom o polymorfizmus , dedičstvo , abstrakcie , zapuzdrenie , objekt a trieda .
Výhody C++ :
- C++ je jazyk OOPs, čo znamená, že údaje sa považujú za objekty.
- C++ je jazyk s viacerými paradigmami; Zjednodušene to znamená, že môžeme naprogramovať logiku, štruktúru a procedúru programu.
- Správa pamäte je kľúčovou funkciou v C++, pretože umožňuje dynamickú alokáciu pamäte
- Je to programovací jazyk strednej úrovne, čo znamená, že dokáže vyvíjať hry, desktopové aplikácie, ovládače a jadrá
Ak sa chcete dozvedieť viac, pozrite si článok - Aké sú výhody C++?
2. Aké sú rôzne dátové typy prítomné v C++?

Rôzne typy dátových typov v C++
Ďalšie informácie nájdete v časti ' std' je známy aj ako štandardný alebo ho možno interpretovať ako menný priestor. Príkaz pomocou menného priestoru std informuje kompilátor, aby pridal všetko pod std menný priestor a vštepiť ich do globálny menný priestor . Toto všetko vštepovanie globálneho menného priestoru nám prináša výhody cout a jedenie bez použitia std::_operator_.
Ďalšie informácie nájdete v časti menný priestor a std .
4. Čo sú referencie v C++?
Keď je premenná opísaná ako referencia, stáva sa aliasom už existujúcej premennej. Jednoducho povedané, odkazovaná premenná je ďalšou pomenovanou premennou existujúcej premennej, pričom treba mať na pamäti, že zmeny vykonané v referenčnej premennej sa prejavia v už existujúcej premennej. Referenčnej premennej predchádza a '&' symbol.
Syntax:
int GFG = 10; // reference variable int& ref = GFG;>
Ďalšie informácie nájdete v časti referencie v C++
5. Čo rozumiete pod pojmom Call by Value a Call by Reference?
V tomto programovacom jazyku na volanie funkcie máme 2 metódy: Volajte podľa hodnoty a Volajte podľa referencie
Volajte podľa hodnoty | Volajte podľa referencie |
|---|---|
| Odovzdáva sa kópia premennej. | Samotná premenná je odovzdaná zásadne. |
| Volanie funkcie odoslaním hodnôt kopírovaním premenných. | Volanie funkcie odoslaním adresy odovzdávanej premennej. |
| Zmeny vykonané vo funkcii sa nikdy neprejavia mimo funkcie na premennej. Stručne povedané, pôvodná hodnota sa v Call by Value nikdy nemení. | Zmeny vykonané vo funkciách je možné vidieť mimo funkcie na odovzdanej funkcii. Stručne povedané, pôvodná hodnota sa v Call podľa odkazu zmení. |
| Odovzdané skutočné a formálne parametre sú uložené v rôznych pamäťových miestach. Preto, aby Call by Value trochu pamäte nestačí | Odovzdané aktuálne a formálne parametre sú uložené na rovnakom pamäťovom mieste. Preto je Call by Reference o niečo efektívnejšia z hľadiska pamäte. |
Informácie nájdete v časti rozdiel medzi volaním podľa hodnoty a volaním podľa referencie
6. Definujte token v C++
Token je najmenší individuálny prvok programu, ktorému rozumie kompilátor. Token obsahuje nasledovné:
- Kľúčové slová – ktoré majú pre kompilátor špeciálny význam
- Identifikátory – ktoré majú jedinečnú hodnotu/identitu
- Konštanty – To nikdy nezmení ich hodnotu počas celého programu
- Struny – Obsahuje homogénny sled údajov
- Špeciálne symboly – Majú osobitný význam a nemožno ich použiť na iný účel; napr.: [] () {}, ; * = #
- Operátori – Kto vykonáva operácie s operandom
Ďalšie informácie nájdete v časti Tokeny v C++
7. Aký je rozdiel medzi C a C++?
C | C++ |
|---|---|
| Je to procedurálny programovací jazyk. Jednoducho povedané, nepodporuje triedy a objekty | Ide o zmes procedurálnych a objektovo orientovaných programovacích jazykov. Jednoducho povedané, podporuje triedy a objekty. |
| Nepodporuje žiadne koncepty OOP, ako je polymorfizmus, abstrakcia údajov, zapuzdrenie, triedy a objekty. | Podporuje všetky koncepty údajov |
| Nepodporuje preťaženie funkcií a operátorov | Podporuje funkciu a preťaženie operátora |
| Je to funkčne riadený jazyk | Je to objektovo riadený jazyk |
Ďalšie informácie nájdete v časti Rozdiel medzi C a C++
8. Aký je rozdiel medzi štruktúrou a triedou?
Struct | Trieda |
|---|---|
| Členovia štruktúry sú vždy v predvolenom nastavení verejný režim | Členovia triedy môžu byť v súkromnom, chránenom a verejnom režime. |
| Štruktúry sú hodnotového typu. Majú hodnotu iba v pamäti. | Triedy sú referenčného typu. Obsahuje odkaz na objekt v pamäti. |
| Pamäť v štruktúrach je uložená ako zásobníky | Pamäť v triedach je uložená ako haldy. |
Ďalšie informácie nájdete v časti Rozdiel medzi štruktúrou a triedou.
9. Aký je rozdiel medzi referenciou a ukazovateľom?
Odkaz herec zeenat aman | Ukazovateľ |
|---|---|
| Hodnotu referencie nie je možné opätovne priradiť | Hodnotu ukazovateľa možno znova priradiť |
| Nikdy nemôže držať a nulový hodnotu, pretože potrebuje existujúcu hodnotu, aby sa stala aliasom | Môže držať alebo ukazovať na a nulový hodnotu a nazývať sa a nullptr alebo nulový ukazovateľ |
| Nemôže pracovať s poľami | Dokáže pracovať s poliami |
| Na prístup k členom triedy/štruktúry používa „ . ' | Na prístup k členom triedy/štruktúry používa „ -> ' |
| Referenčné miesto v pamäti je ľahko prístupné alebo ho možno použiť priamo | Pamäťové umiestnenie ukazovateľa nie je možné ľahko získať, pretože musíme použiť dereferenciu „ * ' |
Ďalšie informácie nájdete v časti Rozdiel medzi referenciou a ukazovateľom
10. Aký je rozdiel medzi preťažením funkcie a preťažením operátora?
Preťaženie funkcií | Preťaženie operátora |
|---|---|
| V podstate ide o definovanie funkcie mnohými spôsobmi, takže existuje veľa spôsobov, ako ju zavolať, alebo jednoducho máte viacero verzií tej istej funkcie | V podstate ide o prax prideľovania osobitného významu existujúcemu významu operátora alebo jednoducho predefinovanie vopred predefinovaného významu. |
| Parametrizované funkcie sú dobrým príkladom preťaženia funkcií, pretože len zmenou argumentu alebo parametra funkcie ju robíte užitočnou na rôzne účely. | Polymorfizmus je dobrým príkladom preťaženia operátora, pretože objekt triedy alokácií môžu používať a volať rôzne triedy na rôzne účely |
Príklad preťaženia funkcií:
| Príklad preťaženia operátora:
|
Ďalšie informácie nájdete v časti Preťaženie operátora a Preťaženie funkcií
11. Aký je rozdiel medzi poľom a zoznamom?
Polia | zoznamy |
|---|---|
| Pole sú súvislé pamäťové miesta homogénnych dátových typov uložené na pevnom mieste alebo veľkosti. | Zoznamy sú klasické jednotlivé prvky, ktoré sú navzájom prepojené alebo spojené pomocou ukazovateľov a nemajú pevnú veľkosť. |
| Polia sú svojou povahou statické. | Zoznamy majú dynamický charakter |
| Zaberá menej pamäte ako prepojené zoznamy. | Používa viac pamäte, pretože je potrebné uložiť hodnotu a umiestnenie v pamäti ukazovateľa |
Ďalšie informácie nájdete v časti Polia vs zoznam
12. Aký je rozdiel medzi slučkou while a slučkou do-while?
Kým slučka | do-while Loop |
|---|---|
| Slučka While sa tiež nazýva slučka riadená vstupom | Slučka do-while sa nazýva výstupná kontrolná slučka |
| Ak podmienka nie je splnená, príkazy v rámci cyklu sa nevykonajú | Aj keď podmienka nie je splnená, príkazy vo vnútri cyklu sa vykonajú aspoň raz |
Príklad slučky while: kým (podmienka) do a while v jave {príkazy, ktoré sa majú vykonať;}; | Príklad slučky do-while: urobiť { príkazy, ktoré sa majú vykonať; } while(podmienka alebo výraz); |
Ďalšie informácie nájdete v časti Rozdiel medzi slučkou while a do-while
13. Diskutujte o rozdiele medzi prefixom a postfixom?
predpona | postfix |
|---|---|
| Znamená to jednoducho umiestniť operátora pred operand | Jednoducho to znamená umiestniť operátora za operand |
| Predtým sa vykoná '; ' | Spustí sa po '; ' |
| Asociativita predpony ++ je sprava doľava | Asociativita postfixu ++ je zľava doprava |
Ďalšie informácie nájdete v časti Rozdiel medzi predponou a postfixom
14. Aký je rozdiel medzi new a malloc()?
Nový | malloc() |
|---|---|
| nový je operátor, ktorý vykonáva operáciu | malloc je funkcia, ktorá vracia a prijíma hodnoty |
| new volá konštruktérov | malloc nemôže volať konštruktor |
| new je rýchlejší ako malloc, keďže ide o operátora | malloc je pomalší ako nový, pretože ide o funkciu |
| new vráti presný typ údajov | malloc vracia neplatnosť* |
Ďalšie informácie nájdete v časti Rozdiel medzi new a malloc()
15. Aký je rozdiel medzi virtuálnymi funkciami a čisto virtuálnymi funkciami?
Virtuálna funkcia | Čistá virtuálna funkcia |
|---|---|
| Virtuálna funkcia je členská funkcia základnej triedy, ktorú možno predefinovať v inej odvodenej triede. | Čistá virtuálna funkcia je členská funkcia základnej triedy, ktorá je deklarovaná iba v základnej triede a definovaná v odvodenej triede, aby sa z nej nestala abstraktná trieda. |
| Virtuálna funkcia má svoju definíciu vo svojej príslušnej základnej triede. | V Pure Virtual Function neexistuje žiadna definícia a inicializuje sa s čistým špecifikátorom (= 0). |
| Základná trieda má virtuálnu funkciu, ktorá môže byť reprezentovaná alebo inštanciou; Jednoducho povedané, jeho predmet sa dá vyrobiť. | Základná trieda s čisto virtuálnou funkciou sa stáva abstraktnou, ktorú nemožno reprezentovať ani inštanciu; Jednoducho povedané, to znamená, že jeho predmet nemožno vyrobiť. |
Ďalšie informácie nájdete v časti Rozdiel medzi virtuálnymi funkciami a čisto virtuálnymi funkciami
16. Čo sú triedy a objekty v C++?
Trieda je užívateľsky definovaný dátový typ, kde sú všetky členské funkcie a dátové členy šité na mieru podľa požiadaviek a požiadaviek, navyše k nim je možné pristupovať pomocou objekt . Na deklarovanie užívateľom definovaného dátového typu používame kľúčové slovo trieda.
Objekt je inštanciou triedy a entity s hodnotou a stavom; Jednoducho povedané, používa sa ako katalyzátor alebo na reprezentáciu člena triedy. Môže obsahovať iné parametre alebo žiadne.
Poznámka: Trieda je plán, ktorý definuje funkcie, ktoré používa objekt.
Ďalšie informácie nájdete v tejto časti Čo sú triedy a objekty
17. Čo je prepisovanie funkcií?
Keď sa v odvodenej triede používa funkcia s rovnakým názvom, rovnakými argumentmi alebo parametrami a rovnakým návratovým typom, ktorý je už prítomný/deklarovaný v základnej triede, je to známe ako prepísanie funkcie. Je to príklad Runtime Polymorphism alebo Late Binding, čo znamená, že prepísaná funkcia bude vykonaná v čase behu vykonávania.
Ďalšie informácie nájdete v časti Prepisovanie funkcií v C++
18. Aké sú rôzne koncepty OOP v C++?
- triedy : Je to užívateľsky definovaný dátový typ
- Objekty : Je to inštancia triedy
- Abstrakcia: Je to technika zobrazovania iba nevyhnutných detailov
- Zapuzdrenie: Zabalenie údajov do jednej jednotky
- Dedičnosť: Schopnosť triedy odvodzovať vlastnosti a charakteristiky z inej triedy
- Polymorfizmus: Polymorfizmus je známy ako mnoho foriem tej istej veci
Ďalšie informácie nájdete v časti Rôzne koncepty OOP v C++
19. Vysvetlite dedičstvo
Schopnosť alebo schopnosť triedy odvodiť vlastnosti a charakteristiky z inej triedy je známa ako dedičnosť. Jednoducho povedané, je to systém alebo technika opätovného použitia a rozšírenia existujúcich tried bez ich úpravy.
Ďalšie informácie nájdete v časti Dedičnosť
20. Kedy by sme mali použiť viacnásobné dedičstvo?
Viacnásobná dedičnosť znamená, že odvodená trieda môže zdediť dve alebo viac základných/nadradených tried. Je to užitočné, keď odvodená trieda potrebuje skombinovať početné atribúty/kontrakty a zdediť časť alebo celú implementáciu z týchto atribútov/zmluv. Ak chcete vziať príklad zo skutočného života, zamyslite sa nad svojimi rodičmi, kde rodič A je váš OTEC Rodič B je vaša MAMA a dieťa C ste vy.

Viacnásobné dedičstvo
Ďalšie informácie nájdete v časti Viacnásobné dedičstvo .
21. Čo je virtuálne dedičstvo?
Virtuálne dedičstvo je technika, ktorá zabezpečuje, že triedy odvodené od vnukov zdedia iba jednu kópiu členských premenných základnej triedy. Alebo zjednodušene povedané, virtuálne dedičstvo sa používa, keď sa zaoberáme situáciou viacerých dedičstiev, ale chceme zabrániť tomu, aby sa v hierarchii dedičnosti objavili viaceré inštancie tej istej triedy.
22. Čo je to polymorfizmus v C++?
Polymorfizmus je známy ako mnoho foriem tej istej veci. Zjednodušene môžeme povedať, že polymorfizmus je schopnosť zobraziť členskú funkciu vo viacerých formách v závislosti od typu objektu, ktorý ich volá.
Inými slovami, môžeme tiež povedať, že muž môže byť pre niekoho zamestnancom, niekoho synom, niekoho otcom a niekoho manželom; takto sa dá polymorfizmus premietnuť do reálneho života.
Existujú 2 typy polymorfizmu:
- Polymorfizmus času kompilácie
- Preťaženie funkcií
- Preťaženie operátora
- Polymorfizmus doby behu
- Prepísanie funkcie
- Virtuálna funkcia
Ak sa o tom chcete dozvedieť viac, pozrite si Polymorfizmus
23. Aké sú rôzne typy polymorfizmu v C++?
Existujú 2 typy polymorfizmu
čo je f5 na klávesnici
Polymorfizmus v čase kompilácie alebo statická väzba
Tento typ polymorfizmu sa dosiahne počas kompilácie programu, čo vedie k tomu, že je o niečo rýchlejší ako Run time. Tiež dedičstvo nie je zahrnuté v ňom. Pozostáva z 2 ďalšie techniky :
Preťaženie funkcií: Ak existuje viacero funkcií s rovnakým názvom, ale rôznymi parametrami, nazýva sa to preťaženie funkcií.
C++ // same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>
Preťaženie operátora: V podstate ide o prax prideľovania osobitného významu existujúcemu významu operátora alebo jednoducho predefinovanie vopred predefinovaného významu.
class GFG { // private and other modes statements public returnType operator symbol(arguments){ statements } statements };>
Run-time polymorfizmus alebo neskorá väzba
Polymorfizmus za behu prebieha, keď sú funkcie vyvolané počas behu.
Prepísanie funkcie: Prepísanie funkcie nastane, keď je členská funkcia základnej triedy predefinovaná v odvodenej triede s rovnakými argumentmi a návratovým typom.
// 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; }> Výkon:
Function of derived class>
Ďalšie informácie nájdete v časti Rôzne typy polymorfizmu
24. Porovnajte polymorfizmus v čase kompilácie a polymorfizmus v čase behu
Polymorfizmus v čase kompilácie | Polymorfizmus za behu |
|---|---|
| Označuje sa tiež ako statická väzba a skorá väzba. | Označuje sa tiež ako dynamická väzba a neskorá väzba. |
| Je rýchly, pretože spustenie je známe už v čase kompilácie. | V porovnaní s časom kompilácie je pomalý, pretože spustenie je známe za behu. |
| Dosahuje sa preťažením funkcií a preťažením operátora. | Dosahuje sa to virtuálnymi funkciami a prepisovaním funkcií. |
Ďalšie informácie nájdete v časti Polymorfizmus v čase kompilácie a polymorfizmus v čase behu
25. Vysvetlite konštruktor v C++.
Konštruktor je špeciálny typ členskej funkcie triedy, ktorej názov je rovnaký ako názov triedy, ktorou je vyvolaný a inicializuje hodnotu objektu triedy.
Existujú 3 typy konštruktérov:
A. Predvolený konštruktor: Je to najzákladnejší typ konštruktora, ktorý neprijíma žiadne argumenty ani parametre. Aj keď sa nevolá, kompilátor ho zavolá automaticky pri vytvorení objektu.
Príklad:
C++ class Class_name { public: Class_name() { cout << 'I am a default constructor'; } };>
B. Parametrizovaný konštruktor: Je to typ konštruktora, ktorý akceptuje argumenty alebo parametre. Musí sa volať explicitne zadaním hodnôt v argumentoch, pretože tieto argumenty pomáhajú inicializovať objekt, keď je vytvorený. Má tiež rovnaký názov ako trieda.
Tiež sa používa na preťaženie konštruktérov.
Príklad:
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; }> Výkon
G.x = 10, G.y = 15>
C. Kopírovať konštruktor: Kopírovací konštruktor je členská funkcia, ktorá inicializuje objekt pomocou iného objektu rovnakej triedy. Konštruktor Copy tiež berie ako argument odkaz na objekt rovnakej triedy.
Príklad:
C++ Sample(Sample& t) { id = t.id; }>
Ďalšie informácie nájdete v časti Konštruktéri
26. Čo sú deštruktory v C++?
Deštruktory sú členmi funkcií v triede, ktoré odstránia objekt, keď objekt triedy prekročí rozsah. Deštruktory majú rovnaký názov ako trieda, pred ktorou je znak vlnovky (~). Tiež deštruktory nasledujú a zdola nahor na rozdiel od konštruktérov, ktorí postupujú zhora nadol.
Syntax:
~constructor_name(); // tilde sign signifies that it is a destructor>
Ďalšie informácie nájdete v časti Ničiteľ .
27. Čo je virtuálny deštruktor?
Keď ničíte inštancie alebo objekty odvodenej triedy pomocou objektu ukazovateľa základnej triedy, je vyvolaný virtuálny deštruktor, aby sa uvoľnil pamäťový priestor pridelený objektom alebo inštanciou odvodenej triedy.
Virtuálny deštruktor zaručuje, že najskôr sa zavolá deštruktor odvodenej triedy. Potom sa zavolá deštruktor základnej triedy, aby uvoľnil priestor obsadený oboma deštruktormi v triede dedičnosti, čo nás zachráni pred únikom pamäte. Odporúča sa, aby bol váš deštruktor virtuálny vždy, keď je vaša trieda polymorfná.
Ďalšie informácie nájdete v časti Virtuálny ničiteľ
mamta kulkarni herec
28. Je možné preťaženie deštruktora? Ak áno, vysvetlite a ak nie, tak prečo?
Jednoduchá odpoveď je NIE nemôžeme preťažiť deštruktor. V C++ je povinné používať iba deštruktor na triedu. Tiež treba spomenúť, že Destructor neberie argumenty ani nemá parameter, ktorý by mohol pomôcť pri preťažení.
Otázky na pohovor v C++ – stredne pokročilá úroveň
29. Ktoré operácie sú povolené na ukazovateľoch?
Ukazovatele sú premenné, ktoré sa používajú na uloženie adresy inej premennej. Operácie, ktoré sú povolené pre ukazovateľ, sú:
- Zvýšenie/zníženie ukazovateľa
- Sčítanie a odčítanie celého čísla do ukazovateľa
- Porovnanie ukazovateľov rovnakého typu
30. Aký je účel vymazať operátor?
Operátor delete sa používa na vymazanie/odstránenie všetkých charakteristík/vlastností z objektu uvoľnením jeho pamäte; okrem toho nakoniec vráti true alebo false. Jednoducho povedané, zničí alebo uvoľní pole a nepoľové (ukazovateľ) objekty, ktoré sú vytvorené novými výrazmi.
C++ int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>
Ďalšie informácie nájdete v časti Odstrániť operátora
31. Ako sa delete [] líši od delete?
odstrániť[] | vymazať |
|---|---|
| Používa sa na vymazanie celého poľa | Používa sa na odstránenie iba jedného jediného ukazovateľa |
| Používa sa na mazanie objektov Nový[]; Týmto to môžeme povedať odstrániť[] sa používa na odstránenie poľa objektov | Používa sa na mazanie objektov Nový; Týmto to môžeme povedať vymazať sa používa na odstránenie jedného objektu |
| Môže zavolať toľko deštruktorov, koľko chce | Deštruktor triedy môže zavolať iba raz |
32. Čo viete o triede priateľov a funkcii priateľov?
Priateľská trieda je trieda, ktorá má prístup k chráneným aj súkromným premenným tried, v ktorých je deklarovaná ako priateľ.
Príklad triedy priateľov:
C++ class Class_1st { // ClassB is a friend class of ClassA friend class Class_2nd; statements; } class Class_2nd { statements; }>
Funkcia priateľa je funkcia používaná na prístup k súkromným, chráneným a verejným dátovým členom alebo členským funkciám iných tried. Deklaruje sa pomocou kľúčového slova priateľ. Výhodou funkcie priateľa je, že nie je viazaná na rozsah triedy a akonáhle je deklarovaná v triede, navyše ju nemožno volať objektom triedy; preto ho možno volať inými funkciami. Vzhľadom na všetky spomenuté body môžeme povedať, že funkcia priateľa je globálna funkcia .
Príklad funkcie priateľa:
C++ class GFG { statements; friend dataype function_Name(arguments); statements; } OR class GFG { statements' friend int divide(10, 5); statements; }>
Ďalšie informácie nájdete v časti funkcia priateľov a trieda priateľov
33. Čo je to chyba pretečenia?
Chyba pretečenia nastane, keď je číslo príliš veľké na to, aby ho daný typ údajov spracoval. Zjednodušene povedané, je to typ chyby, ktorá je platná pre definovaný, ale prekračuje použitý definovaný rozsah, kde by sa mala zhodovať/ležať.
Napríklad rozsah dátového typu int je –2 147 483 648 do 2,147,483,647 a ak deklarujeme premennú veľkosti 2,247,483,648 vygeneruje chybu pretečenia.
34. Čo robí operátor Rozlíšenia rozsahu?
Operátor rozlíšenia rozsahu sa označuje ako „ :: “ symbol. Rovnako ako jeho názov, tento operátor rieši bariéru rozsahu v programe. Operátor rozlíšenia rozsahu sa používa na odkazovanie na členskú funkciu alebo globálnu premennú mimo ich rozsahu, ku ktorým má tiež prístup k skrytej premennej alebo funkcii v programe.
Rozlíšenie rozsahu sa používa pre množstvo úloh:
- Prístup ku globálnej premennej, keď existuje lokálna premenná s rovnakým názvom
- Na definovanie funkcie mimo triedy
- V prípade viacnásobného dedičstva
- Pre menný priestor
Ďalšie informácie nájdete v časti Operátor rozlíšenia rozsahu
35. Čo sú modifikátory prístupu C++?
Obmedzenie prístupu určené pre členov triedy (či už ide o členskú funkciu alebo údajový člen) je známe ako modifikátory/špecifikátory prístupu.
Modifikátory prístupu sú 3 typov:
- Súkromné - Nie je možné k nemu pristupovať ani ho nemožno zobraziť mimo triedy
- Chránené - Dá sa k nemu pristupovať vtedy a len vtedy, ak je prístupovým objektom odvodená trieda
- Verejné – Dá sa k nej dostať alebo si ju prezerať mimo triedy
Ďalšie informácie nájdete v časti Modifikátory prístupu
36. Dokážete zostaviť program bez hlavnej funkcie?
Áno, je absolútne možné zostaviť program bez main(). Napríklad použite makrá, ktoré definujú hlavné
C++ // C++ program to demonstrate the // a program without main() #include #define fun main int fun(void) { printf('Geeksforgeeks'); return 0; }> Ďalšie informácie nájdete v časti Môžete zostaviť program bez hlavnej funkcie
37. Čo je STL?
STL je známy ako Standard Template Library, je to knižnica, ktorá poskytuje 4 komponenty ako kontajner, algoritmy a iterátory.

C++ STL
Ďalšie informácie nájdete v časti STL v C++
38. Definujte inline funkciu. Môžeme mať v C++ rekurzívnu inline funkciu?
Inline funkcia je forma požiadavky, nie príkaz kompilátoru, čo má za následok vloženie našej funkcie do tela hlavnej funkcie. Inline funkcia sa môže stať réžiou, ak je čas vykonania funkcie kratší ako čas prepnutia z funkcie volajúceho na volanú funkciu. Ak chcete vložiť funkciu, použite kľúčové slovo v rade pred a definujte funkciu pred akýmkoľvek volaním funkcie.

Inline Vysvetlenie funkcie
Syntax:
inline data_type function_name() { Body; }>Odpoveď je Nie; Nemôže byť rekurzívny.
Inline funkcia nemôže byť rekurzívna, pretože v prípade inline funkcie je kód iba umiestnený na miesto, odkiaľ je volaný, a neuchováva časť informácie v zásobníku, ktorá je potrebná pre rekurziu.
Navyše, ak pred rekurzívnu funkciu napíšete inline kľúčové slovo, kompilátor ho bude automaticky ignorovať, pretože vložené kľúčové slovo berie kompilátor iba ako návrh.
Ďalšie informácie nájdete v časti Inline funkcia
39. Čo je abstraktná trieda a kedy ju používate?
Abstraktná trieda je trieda, ktorá je špeciálne navrhnutá na použitie ako základná trieda. Abstraktná trieda obsahuje aspoň jednu čisto virtuálnu funkciu. Čisto virtuálnu funkciu deklarujete pomocou a čistý špecifikátor(= 0) v deklarácii virtuálnej členskej funkcie v deklarácii triedy
Nemôžete použiť abstraktnú triedu ako typ parametra, návratový typ funkcie alebo typ explicitnej konverzie, ani nemôžete deklarovať objekt abstraktnej triedy. Môže sa však použiť na deklarovanie ukazovateľov a odkazov na abstraktnú triedu.
Abstraktná trieda sa používa, ak chcete poskytnúť spoločnú, implementovanú funkčnosť medzi všetkými implementáciami komponentu. Abstraktné triedy vám umožnia čiastočne implementovať vašu triedu, zatiaľ čo rozhrania by nemali žiadnu implementáciu pre žiadnych členov. Jednoducho povedané, abstraktné triedy sú vhodné, ak chcete svojim deťom poskytnúť podrobnosti o implementácii, ale nechcete dovoliť, aby sa inštancia vašej triedy priamo vytvorila.
40. Čo sú statické dátové členy a statické členské funkcie?
Statický údajový člen triedy je normálny údajový člen, ktorému predchádza statické kľúčové slovo. Vykonáva sa pred main() v programe a je inicializovaný na 0, keď je vytvorený prvý objekt triedy. Je viditeľný iba pre definovanú triedu, ale jeho rozsah je celoživotný.
Syntax:
static Data_Type Data_Member;>
Statická členská funkcia je členská funkcia, ktorá sa používa na prístup k iným statickým dátovým členom alebo iným statickým členským funkciám. Je tiež definovaný statickým kľúčovým slovom. K statickej členskej funkcii môžeme pristupovať pomocou názvu triedy alebo objektov triedy.
Syntax:
classname::function name(parameter);>
Otázky na pohovor v C++ – expertná úroveň
41. Aké je hlavné použitie kľúčového slova Volatile?
Rovnako ako jeho názov, veci sa môžu zmeniť náhle a neočakávane; Používa sa teda na informovanie kompilátora, že hodnota sa môže kedykoľvek zmeniť. Nestále kľúčové slovo tiež bráni kompilátoru vykonať optimalizáciu kódu. Bol určený na použitie pri prepojení s hardvérom mapovaným do pamäte, obslužnými programami signálov a inštrukciami strojového kódu.
Ďalšie informácie nájdete v tejto časti Prchavé
42. Definujte triedu úložiska v C++ a niektoré pomenujte
Trieda úložiska sa používa na definovanie vlastností (životnosť a viditeľnosť) premennej alebo funkcie. Tieto funkcie zvyčajne pomáhajú pri sledovaní existencie premennej počas behu programu.
Syntax:
storage_class var_data_type var_name;>
Niektoré typy tried ukladania:

Príklady triedy skladovania
Ďalšie informácie nájdete v časti Skladovacia trieda
43. Čo je špecifikátor meniteľnej triedy úložiska? Ako sa dajú použiť?
Rovnako ako jeho názov, špecifikátor meniteľnej triedy úložiska sa používa iba na dátovom člene triedy, aby bol modifikovateľný, aj keď je člen súčasťou objektu deklarovaného ako const. Statické alebo konštantné alebo referenčné členy nemôžu používať premenlivý špecifikátor. Keď deklarujeme funkciu ako const, tento ukazovateľ odovzdaný funkcii sa stane const.
44. Definujte premennú Rozsah bloku.
Rozsah premennej je teda oblasť, kde je premenná prístupná. Existujú dve oblasti pôsobnosti, A globálne a blokové alebo lokálne.
Premenná rozsahu bloku je známa aj ako premenná lokálneho rozsahu. Premenná, ktorá je definovaná vo funkcii (ako hlavná) alebo vo vnútri bloku (ako slučky a bloky if), je lokálna premenná. Dá sa použiť LEN v tej konkrétnej funkcii/bloku, v ktorej je deklarovaná. premenná s rozsahom bloku nebude dostupná mimo bloku, aj keď je blok vo vnútri funkcie.
Ďalšie informácie nájdete v časti Rozsah premennej
45. Akú funkciu má kľúčové slovo Auto?
Kľúčové slovo auto možno použiť na deklarovanie premennej s komplexným typom jednoduchým spôsobom. Auto môžete použiť na deklarovanie premennej, ak inicializačná fráza obsahuje šablóny, ukazovatele na funkcie, odkazy na členov atď. Vďaka schopnostiam typového odvodzovania môžeme stráviť menej času vypisovaním vecí, ktoré už kompilátor pozná. Keďže všetky typy sú odvodené len vo fáze kompilátora, čas na kompiláciu sa mierne predĺži, ale neovplyvní to dobu spustenia programu.
Ďalšie informácie nájdete v časti Autá v C++
46. Definujte menný priestor v C++.
Priestory názvov nám umožňujú organizovať pomenované položky, ktoré by inak mali globálny rozsah, do menších rozsahov, čo nám umožňuje dať im rozsah priestoru názvov. To umožňuje organizovať časti programu do odlišných logických rozsahov s názvami. Priestor názvov poskytuje miesto na definovanie alebo deklarovanie identifikátorov, ako sú premenné, metódy a triedy.
Alebo by sme mohli povedať, že priestor názvov je deklaratívna zóna, ktorá dáva identifikátorom (názvy typov, funkcií, premenných atď.) v rámci nej rozsah. Priestory názvov sa používajú na usporiadanie kódu do logických kategórií a na zabránenie kolíziám mien, ku ktorým môže dôjsť, keď máte v kódovej základni veľa knižníc.
nastavenia webového prehliadača
Ďalšie informácie nájdete v časti Menný priestor v C++
47. Kedy sa používa návratový typ void()?
Kľúčové slovo void, keď sa používa ako návratový typ funkcie, označuje, že funkcia nevracia hodnotu. Ak sa použije ako zoznam parametrov pre funkciu, void znamená, že funkcia neberie žiadne parametre. Funkcie, ktoré nevracajú hodnotu, sú známe aj ako funkcie void. Nazývajú sa neplatné, pretože nie sú navrhnuté tak, aby niečo vrátili. Pravda, ale len čiastočne. Nemôžeme vrátiť hodnoty z neplatných funkcií, ale určite môžeme niečo vrátiť. Hoci funkcie void nemajú návratový typ, môžu vrátiť hodnoty.
Ďalšie informácie nájdete v časti Neplatný typ návratu .
48. Aký je rozdiel medzi plytkou a hlbokou kópiou?
Plytká kópia | Deep Copy |
|---|---|
| V plytkej kópii sa uloží kópia pôvodného objektu a nakoniec sa skopíruje iba referenčná adresa. Jednoducho povedané, plytká kópia sa duplikuje čo najmenej | V hĺbkovej kópii sa ukladá kópia pôvodného objektu aj opakované kópie. Zjednodušene povedané, Deep copy duplikuje všetko |
| Plytká kópia kolekcie je kópiou štruktúry kolekcie, nie prvkov. S plytkou kópiou teraz dve kolekcie zdieľajú jednotlivé prvky. | Hlboká kópia kolekcie sú dve kolekcie so všetkými prvkami pôvodnej kolekcie duplikovanými. |
| Plytká kópia je rýchlejšia | Hlboké kopírovanie je pomerne pomalšie. |
Ďalšie informácie nájdete v časti Plytká kópia VS Deep Copy
49. Môžeme zavolať virtuálnu funkciu z konštruktora?
Áno, môžeme zavolať virtuálnu funkciu z konštruktora. Ale môže vyvolať výnimku prepísania.
50. Čo sú ukazovatele neplatnosti?
Rovnako ako jeho názov, ukazovateľ void je ukazovateľ, ktorý nie je spojený s ničím ani so žiadnym typom údajov. Ukazovateľ void však môže obsahovať hodnotu adresy akéhokoľvek typu a možno ho konvertovať z jedného typu údajov na druhý.
Ďalšie informácie nájdete na Void Ukazovateľ v C++
Bonusová otázka:
Čo je ' toto 'ukazovateľ v C++?
toto ukazovateľ umožňuje každému objektu prístup k jeho vlastnej adrese prostredníctvom základného ukazovateľa. Všetky členské funkcie preberajú toto ukazovateľ ako implicitný argument. toto ukazovateľ sa môže použiť na odkazovanie na volajúci objekt v rámci členskej funkcie.
- toto ukazovateľ sa používa na odovzdanie objektu ako parametra inej metóde.
- Každý objekt dostane svoju vlastnú kópiu dátového člena.
- toto ukazovateľ sa používa na deklarovanie indexerov.
Ďalšie informácie nájdete v časti toto ukazovateľ v C++