logo

C++ interviu klausimai ir atsakymai (2024 m.)

C++ – privaloma žinoma ir visų laikų mėgstamiausia programavimo kalba programavimo kalba. Jis vis dar aktualus, kaip buvo devintojo dešimtmečio viduryje. Kaip bendrosios paskirties ir į objektą orientuota programavimo kalba yra plačiai naudojama dažniausiai kiekvieną kartą koduojant. Dėl to kai kurie darbo vaidmenys reikalauja, kad žmonės laisvai mokėtų C++. Jį naudoja geriausios IT įmonės, tokios kaip Evernote, LinkedIn, Microsoft, Opera, NASA , ir Meta dėl savo patikimumo, našumo ir daugybės nustatymų, kuriais jis gali būti naudojamas. Taigi, norėdami patekti į šias įmones, turite jas gerai išmanyti 50 geriausių C++ interviu klausimų dėl kurių prieš įdarbintojus galite atrodyti kaip ekspertas.

50 geriausių C++ interviu klausimų naujokams ir patyrusiems (2022 m.)

Kad pasiruoštumėte interviu, atnešėme 50 populiariausių C++ interviu klausimų pradedantysis, vidutinis ir patyręs kuriuos būtinai turite atlikti, kad patektumėte į aukščiausias tarptautines korporacijas.

C++ interviu klausimai pirmakursiams

1. Kas yra C++? Kokie yra C++ pranašumai?

C++ yra į objektą orientuota programavimo kalba, kuri buvo įdiegta siekiant įveikti jurisdikcijas, kuriose trūko C. Į objektą orientuotą reiškia, kad jis veikia su sąvoka polimorfizmas , paveldėjimo , abstrakcija , inkapsuliavimas , objektas ir klasė .



C++ pranašumai :

  1. C++ yra OOP kalba, o tai reiškia, kad duomenys laikomi objektais.
  2. C++ yra kelių paradigmų kalba; Paprasčiau tariant, tai reiškia, kad galime užprogramuoti programos logiką, struktūrą ir procedūrą.
  3. Atminties valdymas yra pagrindinė C++ funkcija, nes ji leidžia dinamiškai paskirstyti atmintį
  4. Tai vidutinio lygio programavimo kalba, kuri reiškia, kad ji gali kurti žaidimus, darbalaukio programas, tvarkykles ir branduolius

Norėdami sužinoti daugiau, skaitykite straipsnį - Kokie yra C++ pranašumai?

2. Kokie yra skirtingi duomenų tipai C++?

duomenų tipai C++

Įvairių tipų duomenų tipai C++

Norėdami gauti daugiau informacijos, žr std' taip pat žinomas kaip standartinis arba gali būti interpretuojamas kaip vardų erdvė. Komanda naudojant vardų sritį std informuoja kompiliatorių, kad jis pridėtų viską, kas nurodyta std vardų erdvė ir įskiepyti juos į pasaulinė vardų erdvė . Visa tai pasaulinės vardų erdvės įdiegimas naudingas mums cout ir valgymas nenaudojant std::_operatorius_.

Norėdami gauti daugiau informacijos, žr vardų sritis ir std .

4. Kas yra nuorodos C++?

Kai kintamasis aprašomas kaip nuoroda, jis tampa jau esamo kintamojo slapyvardžiu. Paprastais žodžiais tariant, nurodytas kintamasis yra kitas pavadintas esamo kintamojo kintamasis, turint omenyje, kad nuorodos kintamojo pakeitimai atsispindės jau esančiame kintamajame. Prieš atskaitos kintamąjį rašoma a '&' simbolis.

Sintaksė:

int GFG = 10;  // reference variable int& ref = GFG;>

Norėdami gauti daugiau informacijos, žr nuorodos C++

5. Ką reiškia „Call by Value“ ir „Call by Reference“?

Šioje programavimo kalboje funkcijai iškviesti turime 2 būdus: Skambinti pagal vertę ir Skambinti pagal nuorodą

Skambinti pagal vertę

Skambinti pagal nuorodą

Perduota kintamojo kopija.Pats kintamasis perduodamas iš esmės.
Funkcijos iškvietimas siunčiant reikšmes kopijuojant kintamuosius.Funkcijos iškvietimas siunčiant perduodamo kintamojo adresą.
Funkcijos pakeitimai niekada neatsispindi už kintamojo funkcijos ribų. Trumpai tariant, pradinė vertė niekada nekeičiama naudojant Call by Value.Funkcijose atlikti pakeitimai gali būti matomi už atliktos funkcijos funkcijos ribų. Trumpai tariant, pradinė vertė yra pakeista skambinant pagal nuorodą.
Perduoti faktiniai ir formalūs parametrai saugomi skirtingose ​​atminties vietose. Todėl „Call by Value“ atminties neužteksPerduoti faktiniai ir formalūs parametrai saugomi toje pačioje atminties vietoje. Todėl „Call by Reference“ bus šiek tiek efektyvesnis atmintyje.

Norėdami gauti informacijos, žr skirtumas tarp skambučio pagal vertę ir skambučio pagal nuorodą

6. Apibrėžkite prieigos raktą C++

Žetonas yra mažiausias atskiras programos elementas, kurį supranta kompiliatorius. Žetoną sudaro:

  1. Raktažodžiai – Tai turi ypatingą reikšmę sudarytojui
  2. Identifikatoriai – Tai turi unikalią vertę / tapatybę
  3. Konstantos – Tai niekada nekeičia jų vertės per visą programą
  4. Stygos – Jame yra vienalytė duomenų seka
  5. Specialūs simboliai – Jie turi tam tikrą ypatingą reikšmę ir negali būti naudojami kitiems tikslams; pvz.: [] () {}, ; * = #
  6. Operatoriai – Kas atlieka operando operacijas

Norėdami gauti daugiau informacijos, žr Žetonai C++

7. Kuo skiriasi C ir C++?

C

C++

Tai procedūrinė programavimo kalba. Paprastais žodžiais tariant, jis nepalaiko klasių ir objektųTai tiek procedūrinių, tiek į objektą orientuotų programavimo kalbų mišinys. Paprastais žodžiais tariant, jis palaiko klases ir objektus.
Jis nepalaiko jokių OOP sąvokų, tokių kaip polimorfizmas, duomenų abstrakcija, inkapsuliacija, klasės ir objektai.Jis palaiko visas duomenų sąvokas
Jis nepalaiko funkcijų ir operatoriaus perkrovosJis palaiko atitinkamai funkciją ir operatoriaus perkrovą
Tai funkcija pagrįsta kalbaTai objektais valdoma kalba

Norėdami gauti daugiau informacijos, žr Skirtumas tarp C ir C++

8. Kuo skiriasi struktūra ir klasė?

Struktūra

Klasė

Pagal numatytuosius nustatymus struktūros nariai visada yra viešasis režimasKurso nariai gali būti privačiu, apsaugotu ir viešu režimu.
Struktūros yra vertės tipo. Jie turi tik vertę atmintyje.Klasės yra orientacinio tipo. Ji saugo objekto nuorodą atmintyje.
Struktūrų atmintis saugoma kaip krūvosAtmintis klasėse saugoma kaip krūvos.

Norėdami gauti daugiau informacijos, žr Skirtumas tarp struktūros ir klasės.

9. Kuo skiriasi nuoroda ir rodyklė?

Nuoroda

abstrakti klasė

Rodyklė

Nuorodos reikšmės negalima priskirti iš naujoRodyklės reikšmę galima priskirti iš naujo
Jis niekada negali turėti a nulinis vertę, nes jai reikia esamos vertės, kad ji taptų slapyvardžiuJis gali laikyti arba nukreipti į a nulinis vertę ir vadinti a nullptr arba nulinis rodyklė
Jis negali dirbti su masyvaisJis gali dirbti su masyvais
Norėdami pasiekti klasės / struktūros narius, jis naudoja „ . Norėdami pasiekti klasės / struktūros narius, jis naudoja „ ->
Atminties vietą galima lengvai pasiekti arba ją galima naudoti tiesiogiaiŽymeklio atminties vieta negali būti lengvai pasiekiama, nes turime naudoti nuorodą „ *

Norėdami gauti daugiau informacijos, žr Skirtumas tarp nuorodos ir rodyklės

10. Kuo skiriasi funkcijų perkrova ir operatoriaus perkrova?

Funkcijų perkrovimas

Operatoriaus perkrova

Iš esmės tai yra funkcijos apibrėžimas įvairiais būdais, todėl yra daug būdų ją iškviesti arba paprastais žodžiais tariant, turite kelias tos pačios funkcijos versijasIš esmės tai praktikos suteikimas esamai operatoriaus reikšmei suteikti ypatingą reikšmę arba paprastais žodžiais iš naujo apibrėžti iš anksto iš naujo apibrėžtą reikšmę.
Parametrinės funkcijos yra geras funkcijų perkrovimo pavyzdys, nes tik pakeitus funkcijos argumentą ar parametrą, ji tampa naudinga įvairiems tikslams.Polimorfizmas yra geras operatoriaus perkrovos pavyzdys, nes paskirstymo objektas klasė gali būti naudojama ir iškviesta skirtingų klasių įvairiems tikslams.

Funkcijų perkrovos pavyzdys:

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

Operatoriaus perkrovos pavyzdys:

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

Norėdami gauti daugiau informacijos, žr Operatoriaus perkrova ir Funkcijų perkrovimas

11. Kuo skiriasi masyvas ir sąrašas?

Masyvai

Sąrašai

Masyvas yra gretimos vienarūšių duomenų tipų atminties vietos, saugomos nustatytoje vietoje arba dydžiu.Sąrašai yra klasikiniai atskiri elementai, kurie yra susieti arba sujungti vienas su kitu rodyklėmis ir neturi fiksuoto dydžio.
Masyvai yra statinio pobūdžio.Sąrašai yra dinamiški
Naudoja mažiau atminties nei susieti sąrašai.Naudoja daugiau atminties, nes turi išsaugoti reikšmę ir žymeklio atminties vietą

Norėdami gauti daugiau informacijos, žr Masyvai vs sąrašas

12. Kuo skiriasi while ciklo ir do-while ciklo?

Nors Loop

do-while Loop

Nors kilpa taip pat vadinama įėjimo valdoma kilpa„Do-while“ kilpa vadinama išėjimo valdymo kilpa
Jei sąlyga netenkinama, ciklo viduje esantys teiginiai nebus vykdomiNet jei sąlyga netenkinama, teiginiai ciklo viduje bus vykdomi bent vieną kartą

Pavyzdys tam tikro laiko kilpa:

kol (sąlyga)

{vykdytini pareiškimai;};

Pavyzdys ciklo do-while:

daryti {

pareiškimai, kuriuos reikia vykdyti;

} while(sąlyga arba išraiška);

Norėdami gauti daugiau informacijos, žr Skirtumas tarp while ir do-while ciklo

13. Aptarkite, kuo skiriasi priešdėlis ir postfiksas?

priešdėlis

postfix

Tai tiesiog reiškia, kad operatorius yra prieš operandąTai paprasčiausiai reiškia, kad operatorius yra po operando
Jis įvykdo save anksčiau '; “ Jis įvykdo pats po to '; “
Priešdėlio ++ asociatyvumas yra iš dešinės į kairęPostfix ++ asociatyvumas yra iš kairės į dešinę

Norėdami gauti daugiau informacijos, žr Skirtumas tarp priešdėlio ir postfikso

14. Kuo skiriasi new ir malloc()?

naujas

malloc ()

naujas yra operatorius, kuris atlieka operacijąmalloc yra funkcija, kuri grąžina ir priima reikšmes
nauji skambina konstruktoriaimalloc negali iškviesti konstruktoriaus
naujas yra greitesnis nei malloc, nes tai yra operatoriusmalloc yra lėtesnis nei naujas, nes tai yra funkcija
naujas grąžina tikslų duomenų tipąmalloc grąžina negaliojančią*

Norėdami gauti daugiau informacijos, žr Skirtumas tarp new ir malloc ()

15. Kuo skiriasi virtualios funkcijos nuo grynųjų virtualių funkcijų?

Virtuali funkcija

Gryna virtuali funkcija

Virtuali funkcija yra pagrindinės klasės nario funkcija, kurią galima iš naujo apibrėžti kitoje išvestinėje klasėje.Gryna virtuali funkcija yra pagrindinės klasės nario funkcija, kuri deklaruojama tik bazinėje klasėje ir apibrėžiama išvestinėje klasėje, kad ji netaptų abstrakčia klase.
Virtualios funkcijos apibrėžimas yra atitinkamoje bazinėje klasėje.„Pure Virtual Function“ nėra apibrėžimo ir inicijuojamas naudojant gryną specifikaciją (= 0).
Bazinė klasė turi virtualią funkciją, kurią galima pavaizduoti arba egzempliorių; Paprastais žodžiais tariant, jo objektas gali būti pagamintas.Bazinė klasė, turinti gryną virtualią funkciją, tampa abstrakti, kurios negalima pavaizduoti ar egzempliuoti; Paprastais žodžiais tariant, tai reiškia, kad jo objektas negali būti pagamintas.

Norėdami gauti daugiau informacijos, žr Skirtumas tarp virtualių funkcijų ir grynų virtualių funkcijų

16. Kas yra C++ klasės ir objektai?

Klasė yra vartotojo apibrėžtas duomenų tipas, kuriame visos narių funkcijos ir duomenų nariai yra pritaikyti pagal poreikius ir reikalavimus, be to, visa tai galima pasiekti naudojant objektas . Norėdami deklaruoti vartotojo apibrėžtą duomenų tipą, naudojame raktinį žodį klasė.

Objektas yra klasės egzempliorius ir esybė, turinti vertę ir būseną; Paprastai tariant, jis naudojamas kaip katalizatorius arba atstovauja klasės nariui. Jame gali būti skirtingų parametrų arba jų nėra.

Pastaba: Klasė yra planas, apibrėžiantis funkcijas, kurias naudoja objektas.

abc su skaičiais

Daugiau informacijos rasite čia Kas yra klasės ir objektai

17. Kas yra funkcijos nepaisymas?

Kai išvestinėje klasėje naudojama to paties pavadinimo, tų pačių argumentų ar parametrų ir to paties grąžinimo tipo funkcija, jau esanti / deklaruota pagrindinėje klasėje, yra žinoma kaip funkcijos nepaisymas. Tai vykdymo laiko polimorfizmo arba vėlyvo surišimo pavyzdys, o tai reiškia, kad nepaisoma funkcija bus vykdoma vykdymo metu.

Norėdami gauti daugiau informacijos, žr Funkcijų nepaisymas C++

18. Kokios yra įvairios C++ OOP sąvokos?

  • Klasės : Tai vartotojo apibrėžtas duomenų tipas
  • Objektai : Tai yra klasės pavyzdys
  • Abstrakcija: Tai tik būtinų detalių rodymo technika
  • Inkapsuliavimas: Duomenų suvyniojimas į vieną vienetą
  • Paveldėjimas: Klasės gebėjimas išvesti savybes ir charakteristikas iš kitos klasės
  • Polimorfizmas: Polimorfizmas yra žinomas kaip daugybė to paties dalyko formų

Norėdami gauti daugiau informacijos, žr Įvairios OOP sąvokos C++

19. Paaiškinkite paveldėjimą

Klasės galimybė arba gebėjimas išvesti savybes ir charakteristikas iš kitos klasės yra žinomas kaip paveldėjimas. Paprastais žodžiais tariant, tai yra esamų klasių pakartotinio panaudojimo ir išplėtimo sistema arba technika jų nekeičiant.

Norėdami gauti daugiau informacijos, žr Paveldėjimas

20. Kada turėtume naudoti daugialypį paveldėjimą?

Keli paveldėjimai reiškia, kad išvestinė klasė gali paveldėti dvi ar daugiau bazinių / pirminių klasių. Tai naudinga, kai išvestinei klasei reikia sujungti daugybę atributų / sutarčių ir paveldėti dalį arba visą įgyvendinimą iš šių atributų / sutarčių. Norėdami paimti realų pavyzdį, apsvarstykite savo tėvus, kur tėvas A yra jūsų tėtis Tėvas B yra jūsų MAMA, o vaikas C yra jūs.

daugybinis paveldėjimas

Keli paveldėjimai

Norėdami gauti daugiau informacijos, žr Daugybinis paveldėjimas .

21. Kas yra virtualus paveldėjimas?

Virtualus paveldėjimas yra metodas, užtikrinantis, kad tik vieną bazinės klasės narių kintamųjų kopiją paveldės anūkų kilmės klasės. Arba paprastai tariant, virtualus paveldėjimas naudojamas, kai susiduriame su kelių paveldėjimo atvejų situacija, bet norime, kad paveldėjimo hierarchijoje neatsirastų keli tos pačios klasės egzemplioriai.

22. Kas yra C++ polimorfizmas?

Polimorfizmas yra žinomas kaip daugybė to paties dalyko formų. Paprastais žodžiais tariant, galime pasakyti, kad polimorfizmas yra galimybė rodyti nario funkciją keliomis formomis, priklausomai nuo objekto, kuris juos iškviečia, tipo.

Kitaip tariant, taip pat galime sakyti, kad vyras gali būti kažkam darbuotojas, kažkieno sūnus, kažkieno tėvas ir kažkieno vyras; taip polimorfizmą galima numatyti realiame gyvenime.

Yra 2 polimorfizmo tipai:

  1. Sudarykite laiko polimorfizmą
    • Funkcijų perkrovimas
    • Operatoriaus perkrova
  2. Vykdymo laiko polimorfizmas
    • Funkcijų nepaisymas
    • Virtuali funkcija

Norėdami sužinoti daugiau apie tai, žr Polimorfizmas

23. Kokie yra skirtingi C++ polimorfizmo tipai?

Yra 2 polimorfizmo tipai

Sudarykite laiko polimorfizmą arba statinį įrišimą

Šio tipo polimorfizmas pasiekiamas programos kompiliavimo metu, todėl ji tampa šiek tiek greitesnė nei vykdymo laikas. Be to, paveldėjimas jame nedalyvauja. Jį sudaro Dar 2 būdai :

Funkcijų perkrovimas: Kai yra kelios funkcijos tuo pačiu pavadinimu, bet skirtingais parametrais, tai vadinama funkcijų perkrovimu.

C++
// same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>


Operatoriaus perkrova: Iš esmės tai praktikos suteikimas esamai operatoriaus reikšmei suteikti ypatingą reikšmę arba paprastais žodžiais iš naujo apibrėžti iš anksto iš naujo apibrėžtą reikšmę.

C++
class GFG {  // private and other modes  statements public returnType  operator symbol(arguments){ statements } statements };>

Vykdymo laiko polimorfizmas arba vėlyvas įrišimas

Vykdymo laiko polimorfizmas atsiranda, kai funkcijos iškviečiamos vykdymo metu.

Funkcijos nepaisymas: Funkcijos nepaisymas įvyksta, kai pagrindinės klasės nario funkcija iš naujo apibrėžiama išvestinėje klasėje su tais pačiais argumentais ir grąžinimo tipu.

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; }>

Išvestis:

Function of derived class>

Norėdami gauti daugiau informacijos, žr Įvairūs polimorfizmo tipai

24. Palyginkite kompiliavimo laiko polimorfizmą ir vykdymo laiko polimorfizmą

Kompiliavimo laiko polimorfizmas

Vykdymo laiko polimorfizmas

Jis taip pat vadinamas statiniu ir ankstyvu įrišimu.Jis taip pat vadinamas dinaminiu įrišimu ir vėlyvu įrišimu.
Tai greita, nes vykdymas žinomas anksti kompiliavimo metu.Tai lėta, palyginti su kompiliavimo laiku, nes vykdymas yra žinomas vykdymo metu.
Tai pasiekiama perkraunant funkcijas ir perkraunant operatorių.Tai pasiekiama virtualiomis funkcijomis ir funkcijų nepaisymu.

Norėdami gauti daugiau informacijos, žr Kompiliavimo laiko polimorfizmas ir vykdymo laiko polimorfizmas

25. Paaiškinkite konstruktorių C++.

Konstruktorius yra specialus klasės narių funkcijos tipas, kurio pavadinimas yra toks pat kaip ir klasės, kuri ją iškviečia, ir inicijuoja klasės objekto vertę.

Yra 3 konstruktorių tipai:

A. Numatytasis konstruktorius: Tai pats paprasčiausias konstruktoriaus tipas, kuris nepriima jokių argumentų ar parametrų. Net jei jis nėra vadinamas, kompiliatorius jį iškviečia automatiškai, kai sukuriamas objektas.

Pavyzdys:

C++
class Class_name { public:  Class_name() { cout << 'I am a default constructor'; } };>


B. Parametrizuotas konstruktorius: Tai konstruktoriaus tipas, kuris priima argumentus ar parametrus. Jis turi būti iškviestas aiškiai perduodant reikšmes argumentuose, nes šie argumentai padeda inicijuoti objektą, kai jis sukuriamas. Jis taip pat turi tą patį pavadinimą kaip ir klasės.

Be to, jis naudojamas konstruktoriams perkrauti.

centos vs rhel

Pavyzdys:

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; }>

Išvestis

G.x = 10, G.y = 15>

C. Kopijavimo konstruktorius: Kopijavimo konstruktorius yra nario funkcija, kuri inicijuoja objektą naudojant kitą tos pačios klasės objektą. Be to, kopijavimo konstruktorius kaip argumentą laiko nuorodą į tos pačios klasės objektą.

Pavyzdys:

C++
Sample(Sample& t) { id = t.id; }>


Norėdami gauti daugiau informacijos, žr Konstruktoriai

26. Kas yra C++ destruktoriai?

Destruktoriai yra klasės funkcijų nariai, kurie ištrina objektą, kai klasės objektas išeina iš taikymo srities. Destruktoriai turi tą patį pavadinimą kaip ir klasė, prieš kurią rašomas tildės (~) ženklas. Taip pat naikintojai seka a žemyn į viršų skirtingai nei konstruktoriai, kurie vadovaujasi principu „iš viršaus į apačią“.

Sintaksė:

~constructor_name(); // tilde sign signifies that it is a destructor>

Norėdami gauti daugiau informacijos, žr Naikintojas .

27. Kas yra virtualus destruktorius?

Naikinant išvestinės klasės egzempliorius ar objektus naudojant bazinės klasės žymeklio objektą, iškviečiamas virtualus naikintuvas, kad būtų atlaisvinta atminties vietos, skirtos išvestinės klasės objektui ar egzemplioriui.

Virtualusis destruktorius garantuoja, kad pirmiausia iškviečiamas išvestinės klasės destruktorius. Tada iškviečiamas pagrindinės klasės naikintojas, kad atlaisvintų vietą, kurią užima abu paveldėjimo klasės naikintojai, o tai išgelbės mus nuo atminties nutekėjimo. Kai jūsų klasė yra polimorfinė, patartina padaryti destruktorius virtualų.

Norėdami gauti daugiau informacijos, žr Virtualus naikintojas

28. Ar įmanoma destruktoriaus perkrova? Jei taip, paaiškinkite, o jei ne, kodėl?

Paprastas atsakymas yra NE negalime perkrauti naikintojo. C++ klasėje privaloma tik destruktorius. Be to, Destructor nepriima argumentų ir neturi parametro, kuris gali padėti perkrauti.

C++ interviu klausimai – vidutinis lygis

29. Kokios operacijos leidžiamos su rodyklėmis?

Rodyklės yra kintamieji, naudojami kito kintamojo adreso vietai išsaugoti. Su žymekliu leidžiamos operacijos:

  1. Rodyklės padidinimas / sumažinimas
  2. Sveikojo skaičiaus pridėjimas ir atėmimas žymeklyje
  3. To paties tipo rodyklių palyginimas

30. Koks yra Ištrinti operatorius?

Ištrynimo operatorius naudojamas ištrinti/pašalinti visas objekto charakteristikas/ypatybes, atlaisvinant jo atmintį; be to, galiausiai grąžinama tiesa arba klaidinga. Paprastais žodžiais tariant, jis sunaikina arba išskirsto masyvo ir ne masyvo (žymiklio) objektus, kuriuos sukuria naujos išraiškos.

C++
int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>

Norėdami gauti daugiau informacijos, žr Ištrinti operatorių

31. Kuo trynimas [] skiriasi nuo trynimo?

Ištrinti[]

Ištrinti

Jis naudojamas visam masyvui ištrintiJis naudojamas tik vienam žymekliui ištrinti
Jis naudojamas objektams ištrinti naujas[]; Pagal tai galime pasakyti Ištrinti[] naudojamas objektų masyvui ištrintiJis naudojamas objektams ištrinti naujas; Pagal tai galime pasakyti Ištrinti naudojamas norint ištrinti vieną objektą
Jis gali iškviesti tiek naikintojų, kiek noriJis gali iškviesti klasės naikintoją tik vieną kartą

32. Ką žinai apie draugo klasę ir draugo funkciją?

Draugo klasė yra klasė, kuri gali pasiekti ir apsaugotus, ir privačius tų klasių kintamuosius, kur ji paskelbta kaip draugas.

Draugų klasės pavyzdys:

C++
class Class_1st {  // ClassB is a friend class of ClassA  friend class Class_2nd;  statements; } class Class_2nd {  statements; }>


Draugo funkcija yra funkcija, naudojama norint pasiekti privačių, saugomų ir viešųjų duomenų narius arba kitų klasių narių funkcijas. Jis deklaruojamas su draugo raktiniu žodžiu. Draugo funkcijos pranašumas yra tas, kad ji nėra susieta su klasės apimtimi ir, kai ji yra deklaruota klasėje, be to, jos negali iškviesti klasės objektas; todėl jį galima vadinti kitomis funkcijomis. Atsižvelgdami į visus minėtus dalykus, galime teigti, kad draugo funkcija yra globali funkcija .

Draugo funkcijos pavyzdys:

C++
class GFG {  statements;  friend dataype function_Name(arguments);  statements; } OR class GFG {  statements' friend int divide(10, 5);  statements; }>


Norėdami gauti daugiau informacijos, žr draugo funkcija ir draugo klasė

33. Kas yra perpildymo klaida?

Perpildymo klaida įvyksta, kai skaičius yra per didelis, kad būtų galima apdoroti duomenų tipą. Paprastai tariant, tai yra klaidos tipas, kuris galioja apibrėžtam, bet viršija naudojamą apibrėžtą diapazoną, kur ji turėtų sutapti / gulėti.

e r modelio pavyzdžiai

Pavyzdžiui, int duomenų tipo diapazonas yra –2 147 483 648 į 2 147 483 647 o jei deklaruosime dydžio kintamąjį 2 247 483 648 tai sugeneruos perpildymo klaidą.

34. Ką daro „Scope Resolution“ operatorius?

Apimties skyrimo operatorius žymimas „ :: ‘simbolis. Kaip ir jo pavadinimas, šis operatorius pašalina programos apimties barjerą. Apimties nustatymo operatorius naudojamas nario funkcijai arba visuotiniam kintamajam, nepatenkančiam į jų taikymo sritį, nurodyti, be to, jis taip pat gali pasiekti paslėptą kintamąjį arba funkciją programoje.

„Scope Resolution“ naudojama daugeliui užduočių:

  1. Norėdami pasiekti visuotinį kintamąjį, kai yra vietinis kintamasis tuo pačiu pavadinimu
  2. Funkcijai apibrėžti už klasės ribų
  3. Daugybinio paveldėjimo atveju
  4. Vardų erdvei

Norėdami gauti daugiau informacijos, žr Apimties raiškos operatorius

35. Kas yra C++ prieigos modifikatoriai?

Prieigos apribojimas, nurodytas klasės nariams (nesvarbu, ar tai nario funkcija, ar duomenų narys), yra žinomas kaip prieigos modifikatoriai / specifikatoriai.

Prieigos modifikatoriai yra 3 tipų:

  1. Privatus – Jo negalima nei pasiekti, nei žiūrėti iš už klasės ribų
  2. Apsaugotas – Jį galima pasiekti tada ir tik tada, kai prieigos priemonė yra išvestinė klasė
  3. Viešas – Jį galima pasiekti arba peržiūrėti iš klasės ribų

Norėdami gauti daugiau informacijos, žr Prieigos modifikatoriai

36. Ar galite sudaryti programą be pagrindinės funkcijos?

Taip, visiškai įmanoma sudaryti programą be main(). Pavyzdžiui, naudokite makrokomandas, kurios apibrėžia pagrindinę

C++
// C++ program to demonstrate the // a program without main() #include  #define fun main  int fun(void) {  printf('Geeksforgeeks');  return 0; }>

Norėdami gauti daugiau informacijos, žr Ar galite sudaryti programą be pagrindinės funkcijos

37. Kas yra STL?

STL yra žinomas kaip standartinė šablonų biblioteka, tai biblioteka, kurioje yra 4 komponentai, tokie kaip konteineris, algoritmai ir iteratoriai.

C++ STL

Norėdami gauti daugiau informacijos, žr STL C++ kalba

38. Apibrėžkite eilutę funkciją. Ar galime turėti rekursinę eilutę C++?

Inline funkcija yra užklausos forma, o ne užsakymas kompiliatoriui, dėl kurio mūsų funkcija įtraukiama į pagrindinės funkcijos turinį. Eilutinė funkcija gali tapti papildoma, jei funkcijos vykdymo laikas yra trumpesnis nei perjungimo iš skambintojo funkcijos į iškviestą funkciją laikas. Norėdami sukurti funkciją eilute, naudokite raktinį žodį eilutę prieš iškviečiant funkciją ir apibrėžkite funkciją.

Inline funkcija

Inline funkcijos paaiškinimas

Sintaksė:

inline data_type function_name() { Body; }>

Atsakymas yra Ne; Jis negali būti rekursyvus.

Įterptinė funkcija negali būti rekursinė, nes eilutinės funkcijos atveju kodas tik patalpinamas į vietą, iš kurios jis iškviečiamas, ir nepalaiko krūvoje informacijos, reikalingos rekursijai.

Be to, jei prieš rekursinę funkciją rašote įterptinį raktinį žodį, kompiliatorius automatiškai jo nepaisys, nes į eilutę kompiliatorius imasi tik pasiūlymo.

Norėdami gauti daugiau informacijos, žr Inline funkcija

39. Kas yra abstrakčioji klasė ir kada ją naudojate?

Abstrakčioji klasė yra klasė, kuri yra specialiai sukurta naudoti kaip bazinė klasė. Abstrakčioje klasėje yra bent viena gryna virtuali funkcija. Jūs deklaruojate gryną virtualią funkciją naudodami a grynas specifikatorius (= 0) virtualaus nario funkcijos deklaracijoje klasės deklaracijoje

Negalite naudoti abstrakčios klasės kaip parametro tipo, funkcijos grąžinimo tipo ar aiškios konversijos tipo, taip pat negalite deklaruoti abstrakčios klasės objekto. Tačiau jis gali būti naudojamas abstrakčios klasės nuorodoms ir nuorodoms deklaruoti.

awt java

Abstrakčioji klasė naudojama, jei norite pateikti bendrą įdiegtą funkcionalumą tarp visų komponento diegimų. Abstrakčios klasės leis jums iš dalies įgyvendinti savo klasę, o sąsajos nebus įgyvendintos jokiems nariams. Paprastais žodžiais tariant, abstrakčios klasės puikiai tinka, jei norite pateikti savo vaikams išsamią įgyvendinimo informaciją, bet nenorite leisti, kad jūsų klasės egzempliorius būtų tiesioginis.

40. Kas yra statinių duomenų nariai ir statinių narių funkcijos?

Klasės statinis duomenų narys yra įprastas duomenų narys, bet prieš jį yra statinis raktinis žodis. Jis vykdomas prieš main() programoje ir inicijuojamas į 0, kai sukuriamas pirmasis klasės objektas. Jis matomas tik apibrėžtai klasei, tačiau jo taikymo sritis yra visą gyvenimą.

Sintaksė:

  static Data_Type Data_Member;>

Statinio nario funkcija yra nario funkcija, naudojama norint pasiekti kitus statinius duomenų elementus arba kitas statinio nario funkcijas. Jis taip pat apibrėžiamas statiniu raktiniu žodžiu. Statinio nario funkciją galime pasiekti naudodami klasės pavadinimą arba klasės objektus.

Sintaksė:

classname::function name(parameter);>

C++ interviu klausimai – eksperto lygis

41. Kas yra pagrindinis raktinio žodžio nepastovus naudojimas?

Kaip ir pavadinimas, viskas gali pasikeisti staiga ir netikėtai; Taigi jis naudojamas informuoti kompiliatorių, kad vertė gali bet kada pasikeisti. Be to, nepastovus raktinis žodis neleidžia kompiliatoriui atlikti kodo optimizavimo. Jis buvo skirtas naudoti, kai sąsaja su atmintimi susieta aparatine įranga, signalų tvarkytuvais ir mašininio kodo instrukcijomis.

Daugiau informacijos rasite čia Nepastovus

42. Apibrėžkite saugyklos klasę C++ ir pavadinkite kai kurias

Saugyklos klasė naudojama apibrėžti kintamojo ar funkcijos ypatybes (gyvenimo trukmę ir matomumą). Šios funkcijos paprastai padeda atsekti kintamojo egzistavimą programos vykdymo metu.

Sintaksė:

storage_class var_data_type var_name;>

Kai kurios saugojimo klasės:

Saugojimo klasės pavyzdžiai

Norėdami gauti daugiau informacijos, žr Sandėliavimo klasė

43. Kas yra kintamos saugojimo klasės specifikatorius? Kaip juos galima panaudoti?

Kaip ir jo pavadinimas, kintamos saugyklos klasės specifikatorius naudojamas tik klasės duomenų nariui, kad jį būtų galima modifikuoti, net jei narys yra objekto, paskelbto kaip const, dalis. Statiniai, const arba atskaitos nariai negali naudoti kintamo specifikatoriaus. Kai paskelbiame funkciją kaip const, ši funkcijai perduota rodyklė tampa const.

44. Apibrėžkite Block apimties kintamąjį.

Taigi kintamojo apimtis yra sritis, kurioje kintamasis yra prieinamas. Yra du taikymo srities regionai: A visuotinis ir blokinis arba vietinis.

Bloko apimties kintamasis taip pat žinomas kaip vietinės apimties kintamasis. Kintamasis, apibrėžtas funkcijos viduje (pvz., pagrindinis) arba bloko viduje (pvz., kilpos ir jei blokai), yra vietinis kintamasis. Jį galima naudoti TIK toje konkrečioje funkcijoje/bloke, kuriame jis deklaruotas. bloko apimties kintamasis nebus pasiekiamas už bloko ribų, net jei blokas yra funkcijos viduje.

Norėdami gauti daugiau informacijos, žr Kintamojo apimtis

45. Kokia yra raktinio žodžio Auto funkcija?

Automatinis raktinis žodis gali būti naudojamas norint aiškiai deklaruoti sudėtingo tipo kintamąjį. Galite naudoti automatinį kintamąjį deklaruoti, jei inicijavimo frazėje yra šablonų, funkcijų rodyklių, nuorodų į narius ir t. t. Su tipo išvados galimybėmis galime praleisti mažiau laiko užrašydami dalykus, kuriuos kompiliatorius jau žino. Kadangi visi tipai išvedami tik kompiliatoriaus fazėje, kompiliavimo laikas šiek tiek pailgėja, tačiau tai neturi įtakos programos vykdymo laikui.

Norėdami gauti daugiau informacijos, žr Automobiliai C++ kalba

46. ​​Apibrėžkite vardų erdvę C++.

Vardų erdvės leidžia suskirstyti pavadintus elementus, kurie kitu atveju turėtų visuotinę apimtį, į mažesnes sritis, todėl galime suteikti jiems vardų srities apimtį. Tai leidžia programos dalis suskirstyti į atskiras logines sritis su pavadinimais. Vardų erdvė suteikia vietą identifikatoriams, pvz., kintamiesiems, metodams ir klasėms, apibrėžti arba deklaruoti.

Arba galime sakyti, kad vardų erdvė yra deklaratyvi zona, suteikianti identifikatoriams (tipų pavadinimams, funkcijoms, kintamiesiems ir pan.) joje esančią sritį. Vardų erdvės naudojamos kodui suskirstyti į logines kategorijas ir išvengti pavadinimų susidūrimų, kurie gali atsitikti, kai kodų bazėje yra daug bibliotekų.

Norėdami gauti daugiau informacijos, žr Vardų erdvė C++

47. Kada naudojamas void() grąžinimo tipas?

Void raktinis žodis, kai naudojamas kaip funkcijos grąžinimo tipas, rodo, kad funkcija negrąžina reikšmės. Kai naudojamas kaip funkcijos parametrų sąrašas, void rodo, kad funkcijai nereikia jokių parametrų. Nevertės grąžinimo funkcijos taip pat žinomos kaip negaliojančios funkcijos. Jie vadinami tuščiais, nes nėra skirti nieko grąžinti. Tiesa, bet tik iš dalies. Negalime grąžinti reikšmių iš tuščiųjų funkcijų, bet tikrai galime kažką grąžinti. Nors negaliojančios funkcijos neturi grąžinimo tipo, jos gali grąžinti reikšmes.

Norėdami gauti daugiau informacijos, žr Tuščias grąžinimo tipas .

48. Kuo skiriasi sekli kopija ir gili kopija?

Sekli kopija

Gili kopija

Seklioje kopijoje saugoma originalaus objekto kopija ir galiausiai nukopijuojamas tik nuorodos adresas. Paprastai tariant, sekli kopija dubliuojasi kuo mažiauDeep copy išsaugoma tiek originalaus objekto kopija, tiek pasikartojančios kopijos. Paprasčiau tariant, „Deep copy“ dubliuoja viską
Sekli kolekcijos kopija yra kolekcijos struktūros, o ne elementų kopija. Su seklia kopija, dvi kolekcijos dabar dalijasi atskirais elementais.Gilioji kolekcijos kopija yra dvi kolekcijos, kuriose visi pradinės kolekcijos elementai yra dubliuoti.
Sekli kopija yra greitesnėGilus kopijavimas yra palyginti lėtesnis.

Norėdami gauti daugiau informacijos, žr Sekli kopija VS Deep Copy

49. Ar galime iškviesti virtualią funkciją iš konstruktoriaus?

Taip, virtualią funkciją galime iškviesti iš konstruktoriaus. Tačiau tai gali padaryti nepaisymo išimtį.

50. Kas yra tuščiosios rodyklės?

Tuščia rodyklė, kaip ir jo pavadinimas, yra rodyklė, nesusijusi su niekuo ar su jokiu duomenų tipu. Nepaisant to, tuščioji rodyklė gali turėti bet kokio tipo adreso reikšmę ir gali būti konvertuojama iš vieno duomenų tipo į kitą.

Norėdami gauti daugiau informacijos, žr Tuščia rodyklė C++

Papildomas klausimas:

Kas yra ' tai ‘ žymeklis C++?

tai rodyklė suteikia kiekvienam objektui prieigą prie savo adreso per esminį žymeklį. Visos nario funkcijos paimamos tai rodyklė kaip numanomas argumentas. tai rodyklė gali būti naudojamas nurodyti iškviečiantį objektą nario funkcijoje.

  • tai žymeklis naudojamas perduoti objektą kaip parametrą kitam metodui.
  • Kiekvienas objektas gauna savo duomenų nario kopiją.
  • tai rodyklė naudojamas indeksuotojams deklaruoti.

Norėdami gauti daugiau informacijos, žr tai žymeklis C++