logo

Otázky a odpovede na rozhovor v C++ (2024)

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.

50 najlepších otázok na pohovor v C++ pre začiatočníkov a skúsených (2022)

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++ :

  1. C++ je jazyk OOPs, čo znamená, že údaje sa považujú za objekty.
  2. C++ je jazyk s viacerými paradigmami; Zjednodušene to znamená, že môžeme naprogramovať logiku, štruktúru a procedúru programu.
  3. Správa pamäte je kľúčovou funkciou v C++, pretože umožňuje dynamickú alokáciu pamäte
  4. 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++?

dátové typy 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é:

  1. Kľúčové slová – ktoré majú pre kompilátor špeciálny význam
  2. Identifikátory – ktoré majú jedinečnú hodnotu/identitu
  3. Konštanty – To nikdy nezmení ich hodnotu počas celého programu
  4. Struny – Obsahuje homogénny sled údajov
  5. Špeciálne symboly – Majú osobitný význam a nemožno ich použiť na iný účel; napr.: [] () {}, ; * = #
  6. 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 objektyIde 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átorovPodporuje funkciu a preťaženie operátora
Je to funkčne riadený jazykJe 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íkyPamäť 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 aliasomMôže držať alebo ukazovať na a nulový hodnotu a nazývať sa a nullptr alebo nulový ukazovateľ
Nemôže pracovať s poľamiDokáž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ť priamoPamäť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 funkcieV 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í:

  1. int GFG(int X, int Y);
  2. int GFG(znak X, znak Y);

Príklad preťaženia operátora:

  1. int GFG() = X() + Y();
  2. int GFG() = X() – Y();

Ď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á vstupomSluč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 operandJednoducho to znamená umiestniť operátora za operand
Predtým sa vykoná '; ' Spustí sa po '; '
Asociativita predpony ++ je sprava doľavaAsociativita 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áciumalloc je funkcia, ktorá vracia a prijíma hodnoty
new volá konštruktérovmalloc nemôže volať konštruktor
new je rýchlejší ako malloc, keďže ide o operátoramalloc je pomalší ako nový, pretože ide o funkciu
new vráti presný typ údajovmalloc 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

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:

  1. Polymorfizmus času kompilácie
    • Preťaženie funkcií
    • Preťaženie operátora
  2. 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.

C++
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++
// 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ú:

  1. Zvýšenie/zníženie ukazovateľa
  2. Sčítanie a odčítanie celého čísla do ukazovateľa
  3. 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ľaPouží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 objektovPouží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 chceDeš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:

  1. Prístup ku globálnej premennej, keď existuje lokálna premenná s rovnakým názvom
  2. Na definovanie funkcie mimo triedy
  3. V prípade viacnásobného dedičstva
  4. 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:

  1. Súkromné ​​- Nie je možné k nemu pristupovať ani ho nemožno zobraziť mimo triedy
  2. Chránené - Dá sa k nemu pristupovať vtedy a len vtedy, ak je prístupovým objektom odvodená trieda
  3. 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 funkcia

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 najmenejV 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šiaHlboké 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++