logo

C++-haastattelun kysymyksiä ja vastauksia (2024)

C++ – koodaajien pakollinen ja kaikkien aikojen suosikki ohjelmointikieli. Se on edelleen ajankohtainen, kuten se oli 80-luvun puolivälissä. Yleiskäyttöisenä ja oliopohjaisena ohjelmointikielenä sitä käytetään laajasti enimmäkseen joka kerta koodauksen aikana. Tämän seurauksena jotkin työtehtävät vaativat henkilöiltä sujuvaa C++:n osaamista. Sitä käyttävät IT-alan huippuyritykset, mm Evernote, LinkedIn, Microsoft, Opera, NASA , ja Meta sen luotettavuuden, suorituskyvyn ja laajan valikoiman asetuksia, joissa sitä voidaan käyttää. Joten päästäksesi näihin yrityksiin, sinun on oltava niissä perusteellinen 50 parasta C++-haastattelun kysymystä mikä voi saada sinut näyttämään asiantuntijalta rekrytoijien edessä.

50 parasta C++-haastattelukysymystä uusille ja kokeneille (2022)

Olemme tuoneet sinulle haastatteluvalmiuden 50 parasta C++-haastattelukysymystä aloittelija, keskitason ja kokenut joka sinun täytyy ehdottomasti käydä läpi päästäksesi sijoittuksesi huippuluokan monien yritysten joukkoon.

C++-haastattelukysymyksiä fuksilaisille

1. Mikä on C++? Mitkä ovat C++:n edut?

C++ on olio-ohjelmointikieli, joka otettiin käyttöön voittamaan lainkäyttöalueet, joissa C puuttui. Oliosuuntautuneella tarkoitamme, että se toimii käsitteen kanssa polymorfismi , perinnöstä , abstraktio , kapselointi , objekti ja luokka .



C++:n edut :

  1. C++ on OOPs-kieli, mikä tarkoittaa, että dataa pidetään objekteina.
  2. C++ on usean paradigman kieli; Yksinkertaisesti sanottuna se tarkoittaa, että voimme ohjelmoida ohjelman logiikan, rakenteen ja menettelyn.
  3. Muistinhallinta on C++:n keskeinen ominaisuus, koska se mahdollistaa dynaamisen muistin allokoinnin
  4. Se on keskitason ohjelmointikieli, mikä tarkoittaa, että se voi kehittää pelejä, työpöytäsovelluksia, ohjaimia ja ytimiä

Lue lisää artikkelista - Mitkä ovat C++:n edut?

2. Mitä eri tietotyyppejä C++:ssa on?

tietotyypit C++:ssa

Erityyppiset tietotyypit C++:ssa

Lisätietoja on kohdassa ' std' tunnetaan myös nimellä Standard tai se voidaan tulkita nimiavaruudeksi. Käsky käyttäen nimiavaruutta std kehottaa kääntäjää lisäämään kaiken alle std-nimiavaruus ja juurruta ne sisään globaali nimiavaruus . Tämä kaikki globaalin nimitilan juurruttaminen hyödyttää meitä cout ja syöminen käyttämättä std::_operaattori_.

Lisätietoja on kohdassa nimiavaruus ja std .

4. Mitä ovat viittaukset C++:ssa?

Kun muuttuja kuvataan viittaukseksi, siitä tulee jo olemassa olevan muuttujan alias. Yksinkertaisesti sanottuna viitattu muuttuja on olemassa olevan muuttujan toinen nimetty muuttuja pitäen mielessä, että viitemuuttujaan tehdyt muutokset heijastuvat jo olemassa olevaan muuttujaan. Viitemuuttujan edessä on a '&' symboli.

Syntaksi:

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

Lisätietoja on kohdassa viittaukset C++:ssa

5. Mitä tarkoitat arvolla Call by Value ja Call by Reference?

Tässä ohjelmointikielessä funktion kutsumiseen on kaksi tapaa: Soita arvon mukaan ja Soita viitteellä

Soita arvon mukaan

Soita viitteellä

Muuttujan kopio välitetään.Muuttuja itsessään välitetään pohjimmiltaan.
Funktion kutsuminen lähettämällä arvot kopioimalla muuttujia.Funktion kutsuminen lähettämällä välitetyn muuttujan osoite.
Funktioon tehdyt muutokset eivät koskaan heijastu muuttujan funktion ulkopuolelle. Lyhyesti sanottuna alkuperäistä arvoa ei koskaan muuteta Call by Value -kohdassa.Funktioihin tehdyt muutokset näkyvät funktion ulkopuolella hyväksytyssä funktiossa. Lyhyesti sanottuna alkuperäistä arvoa muutetaan Call viittauksella.
Hyväksytyt todelliset ja muodolliset parametrit tallennetaan eri muistipaikkoihin. Siksi Call by Value -toiminnon muisti ei riitäHyväksytyt todelliset ja muodolliset parametrit tallennetaan samaan muistipaikkaan. Siksi Call by Reference -sovelluksen muistia tehostetaan hieman.

Lisätietoja on kohdassa puhelun ja viittauksen välisen eron

6. Määrittele token C++:ssa

Token on ohjelman pienin yksittäinen elementti, jonka kääntäjä ymmärtää. Tunnus sisältää seuraavat:

  1. Avainsanat – Niillä on kääntäjälle erityinen merkitys
  2. Tunnisteet – Niillä on ainutlaatuinen arvo/identiteetti
  3. Vakiot – Se ei koskaan muuta niiden arvoa koko ohjelman ajan
  4. jouset – Se sisältää homogeenisen datasarjan
  5. Erikoissymbolit – Niillä on jokin erityinen merkitys, eikä niitä voida käyttää muuhun tarkoitukseen; esim: [] () {}, ; * = #
  6. Operaattorit – Kuka suorittaa operandille operaatioita

Lisätietoja on kohdassa Tokenit C++:ssa

7. Mitä eroa on C:llä ja C++:lla?

C

C++

Se on proseduuriohjelmointikieli. Yksinkertaisesti sanottuna se ei tue luokkia ja objektejaSe on sekoitus sekä prosessi- että olioohjelmointikieliä. Yksinkertaisesti sanottuna se tukee luokkia ja objekteja.
Se ei tue mitään OOP-konsepteja, kuten polymorfismia, tiedon abstraktiota, kapselointia, luokkia ja objekteja.Se tukee kaikkia datan käsitteitä
Se ei tue toimintojen ja käyttäjän ylikuormitustaSe tukee toimintoa ja operaattorin ylikuormitusta
Se on funktioohjattu kieliSe on objektiohjattu kieli

Lisätietoja on kohdassa Ero C:n ja C++:n välillä

8. Mitä eroa on structilla ja luokalla?

Rakenne

Luokka

Rakenteen jäsenet ovat aina oletusarvoisesti julkisiaLuokan jäsenet voivat olla yksityisessä, suojatussa ja julkisessa tilassa.
Rakenteet ovat arvotyyppiä. Niillä on arvoa vain muistissa.Luokat ovat referenssityyppisiä. Se pitää kohteen viittauksen muistissa.
Rakenteiden muisti tallennetaan pinoinaLuokkien muisti tallennetaan kasoina.

Lisätietoja on osoitteessa Ero rakenteen ja luokan välillä.

9. Mitä eroa on viitteellä ja osoittimella?

Viite

merkkijono java indexof

Osoitin

Viitteen arvoa ei voi määrittää uudelleenOsoittimen arvo voidaan määrittää uudelleen
Se ei voi koskaan pitää a tyhjä arvo, koska se tarvitsee olemassa olevan arvon tullakseen aliakseksiSe voi pitää tai osoittaa a tyhjä arvoa ja sitä kutsutaan nimellä a nullptr tai nolla osoitin
Se ei voi toimia taulukoiden kanssaSe voi toimia taulukoiden kanssa
Päästäkseen luokan/rakenteen jäseniin se käyttää ' . 'Päästäkseen luokan/rakenteen jäseniin se käyttää ' -> '
Referenssimuistipaikkaan pääsee helposti käsiksi tai sitä voidaan käyttää suoraanOsoittimen muistipaikkaa ei voida käyttää helposti, koska meidän on käytettävä viittausta ' * '

Lisätietoja on osoitteessa Ero viittauksen ja osoittimen välillä

10. Mitä eroa on toimintojen ylikuormituksen ja käyttäjän ylikuormituksen välillä?

Toimintojen ylikuormitus

Kuljettajan ylikuormitus

Pohjimmiltaan se määrittelee funktion useilla tavoilla siten, että on monia tapoja kutsua sitä tai yksinkertaisesti sanottuna sinulla on useita versioita samasta funktiostaSe on pohjimmiltaan käytäntöä antaa erityinen merkitys operaattorin olemassa olevalle merkitykselle tai yksinkertaisesti sanottuna määritellä uudelleen ennalta uudelleen määritelty merkitys
Parametrisoidut funktiot ovat hyvä esimerkki funktion ylikuormituksesta, koska vain muuttamalla funktion argumenttia tai parametria saat siitä hyödyllisen eri tarkoituksiin.Polymorfismi on hyvä esimerkki operaattorin ylikuormituksesta, koska luokkaa voidaan käyttää ja kutsua eri luokat eri tarkoituksiin.

Esimerkki toimintojen ylikuormituksesta:

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

Esimerkki käyttäjän ylikuormituksesta:

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

Lisätietoja on kohdassa Kuljettajan ylikuormitus ja Toimintojen ylikuormitus

11. Mitä eroa on taulukolla ja listalla?

Taulukot

Luettelot

Joukko ovat yhtenäisiä muistipaikkoja, jotka on tallennettu kiinteään paikkaan tai kokoon.Listat ovat klassisia yksittäisiä elementtejä, jotka on linkitetty tai yhdistetty toisiinsa osoittimien avulla ja joilla ei ole kiinteää kokoa.
Taulukot ovat luonteeltaan staattisia.Listat ovat luonteeltaan dynaamisia
Käyttää vähemmän muistia kuin linkitetyt luettelot.Käyttää enemmän muistia, koska sen on tallennettava arvo ja osoittimen muistipaikka

Lisätietoja on kohdassa Arrays vs List

12. Mitä eroa on while-silmukalla ja do-while-silmukalla?

Vaikka Loop

do-while Loop

Vaikka silmukkaa kutsutaan myös sisääntuloohjatuksi silmukaksiDo-while-silmukkaa kutsutaan poistumisohjaussilmukaksi
Jos ehto ei täyty, silmukan sisällä olevia lauseita ei suoritetaVaikka ehto ei täyty, silmukan sisällä olevat käskyt suoritetaan vähintään kerran

Esimerkki hetken silmukasta:

kun (ehto)

{suoritettavat lausunnot;};

Esimerkki do-while-silmukasta:

do {

suoritettavat lausunnot;

} while(ehto tai lauseke);

Lisätietoja on osoitteessa Ero while- ja do-while-silmukan välillä

13. Keskustele etuliitteen ja jälkiliitteen erosta?

etuliite

postfix

Se tarkoittaa yksinkertaisesti operaattorin asettamista operandin edelleSe tarkoittaa yksinkertaisesti operaattorin laittamista operandin perään
Se toteuttaa itsensä ennen '; ' Se toteuttaa itsensä jälkeenpäin '; '
Etuliitteen ++ assosiaatio on oikealta vasemmallePostfix ++:n assosiaatio on vasemmalta oikealle

Lisätietoja on osoitteessa Ero etuliitteen ja jälkiliitteen välillä

14. Mitä eroa new ja malloc() on?

Uusi

malloc()

uusi on operaattori, joka suorittaa toiminnonmalloc on funktio, joka palauttaa ja hyväksyy arvoja
uusia kutsuja rakentajiamalloc ei voi kutsua konstruktoria
new on nopeampi kuin malloc, koska se on operaattorimalloc on hitaampi kuin uusi, koska se on funktio
new palauttaa tarkan tietotyypinmalloc palauttaa mitätön*

Lisätietoja on kohdassa Ero new ja malloc()

15. Mitä eroa on virtuaalisten funktioiden ja puhtaiden virtuaalisten funktioiden välillä?

Virtuaalinen toiminto

Puhdas virtuaalitoiminto

Virtuaalifunktio on perusluokan jäsenfunktio, joka voidaan määritellä uudelleen toisessa johdetussa luokassa.Pure Virtual Function on perusluokan jäsenfunktio, joka on ilmoitettu vain perusluokassa ja määritelty johdettuun luokassa, jotta siitä ei tule abstraktia luokkaa.
Virtuaalifunktiolla on määritelmänsä vastaavassa perusluokassa.Pure Virtual Functionissa ei ole määritelmää, ja se alustetaan puhtaalla määrittimellä (= 0).
Perusluokalla on virtuaalinen funktio, joka voidaan esittää tai ilmentyä; Yksinkertaisesti sanottuna sen esine voidaan tehdä.Perusluokasta, jolla on puhdas virtuaalinen funktio, tulee abstrakti, jota ei voida esittää tai ilmentää; Yksinkertaisesti sanottuna se tarkoittaa, että sen esinettä ei voida tehdä.

Lisätietoja on osoitteessa Ero virtuaalisten toimintojen ja puhtaiden virtuaalisten toimintojen välillä

16. Mitä ovat luokat ja objektit C++:ssa?

Luokka on käyttäjän määrittelemä tietotyyppi, jossa kaikki jäsentoiminnot ja datajäsenet on räätälöity tarpeiden ja vaatimusten mukaan, minkä lisäksi näihin kaikkiin pääsee käsiksi esine . Käyttäjän määrittämän tietotyypin ilmoittamiseen käytämme avainsanaa luokkaa.

Objekti on luokan ja entiteetin esiintymä, jolla on arvo ja tila; Yksinkertaisesti sanottuna sitä käytetään katalysaattorina tai edustamaan luokan jäsentä. Se voi sisältää erilaisia ​​parametreja tai ei yhtään.

Huomautus: Luokka on suunnitelma, joka määrittelee objektin käyttämät funktiot.

binäärihaku python

Katso lisätietoja tästä Mitä ovat luokat ja objektit

17. Mikä on funktion ohitus?

Kun johdetussa luokassa käytetään samannimistä funktiota, samoja argumentteja tai parametreja ja samaa palautustyyppiä, joka on jo olemassa/ilmoitettu perusluokassa, kutsutaan funktion ohitukseksi. Se on esimerkki ajonaikaisesta polymorfismista tai myöhäisestä sidonnasta, mikä tarkoittaa, että ohitettu toiminto suoritetaan suorituksen ajon aikana.

Lisätietoja on kohdassa Funktioiden ohittaminen C++:ssa

18. Mitkä ovat C++:n eri OOP-käsitteet?

  • Luokat : Se on käyttäjän määrittämä tietotyyppi
  • Objektit : Se on esimerkki luokasta
  • Abstraktio: Se on tekniikka, jossa näytetään vain tarpeelliset yksityiskohdat
  • Kapselointi: Tietojen kääriminen yhteen yksikköön
  • Perintö: Luokan kyky johtaa ominaisuuksia ja ominaisuuksia toisesta luokasta
  • Polymorfismi: Polymorfismi tunnetaan saman asian monina muotoina

Lisätietoja on kohdassa Erilaisia ​​OOP-konsepteja C++:ssa

19. Selitä perintö

Luokan kykyä tai kykyä johtaa ominaisuuksia ja ominaisuuksia toisesta luokasta kutsutaan perinnöllisyydeksi. Yksinkertaisesti sanottuna se on järjestelmä tai tekniikka olemassa olevien luokkien uudelleenkäyttöön ja laajentamiseen niitä muuttamatta.

Lisätietoja on kohdassa Perintö

20. Milloin moniperintöä tulisi käyttää?

Useat periytykset tarkoittavat, että johdettu luokka voi periä kaksi tai useampia perus-/emoluokkaa. Se on hyödyllinen, kun johdetun luokan on yhdistettävä useita attribuutteja/sopimuksia ja perittävä osa tai kaikki toteutuksesta näistä määritteistä/sopimuksista. Ottaaksesi esimerkin tosielämästä, harkitse vanhempiasi, jossa vanhempi A on ISÄSI Vanhempi B on äitisi ja lapsi C on sinä.

useita perintöjä

Useita perintöjä

Lisätietoja on kohdassa Moniperintö .

21. Mitä on virtuaalinen perintö?

Virtuaalinen periytyminen on tekniikka, joka varmistaa, että lapsenlapsista johdetut luokat perivät vain yhden kopion perusluokan jäsenmuuttujista. Tai yksinkertaisesti sanottuna, virtuaalista periytymistä käytetään, kun käsittelemme tilannetta, jossa on useita perintöjä, mutta haluamme estää useiden saman luokan esiintymien esiintymisen periytymishierarkiassa.

22. Mitä on polymorfismi C++:ssa?

Polymorfismi tunnetaan saman asian monina muotoina. Yksinkertaisesti sanottuna voimme sanoa, että polymorfismi on kyky näyttää jäsenfunktio useissa muodoissa riippuen niitä kutsuvan objektin tyypistä.

Toisin sanoen voidaan myös sanoa, että mies voi olla jonkun työntekijä, jonkun poika, jonkun isä ja jonkun aviomies; näin polymorfismi voidaan projisoida tosielämässä.

Polymorfismia on 2 tyyppiä:

  1. Kokoa aikapolymorfismi
    • Toimintojen ylikuormitus
    • Kuljettajan ylikuormitus
  2. Ajoajan polymorfismi
    • Toiminnon ohitus
    • Virtuaalinen toiminto

Jos haluat lisätietoja siitä, katso Polymorfismi

23. Mitkä ovat C++:n polymorfismin eri tyypit?

Polymorfismia on 2 tyyppiä

Käännä aikapolymorfismi tai staattinen sidonta

Tämän tyyppinen polymorfismi saavutetaan ohjelman käännösajan aikana, mikä johtaa siihen, että se on hieman nopeampi kuin ajoaika. Myös perinnöllisyys ei liity siihen. Se koostuu 2 muuta tekniikkaa :

Toiminnon ylikuormitus: Kun useita toimintoja on samalla nimellä mutta eri parametreilla, tätä kutsutaan toimintojen ylikuormitukseksi.

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


Kuljettajan ylikuormitus: Se on pohjimmiltaan käytäntöä antaa erityinen merkitys operaattorin olemassa olevalle merkitykselle tai yksinkertaisesti sanottuna määritellä uudelleen ennalta uudelleen määritelty merkitys

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

Run-Time Polymorphism tai Late Binding

Ajonaikainen polymorfismi tapahtuu, kun funktioita kutsutaan ajon aikana.

Toiminnon ohitus: Funktioiden ohittaminen tapahtuu, kun perusluokan jäsenfunktio määritetään uudelleen johdetussa luokassa samoilla argumenteilla ja palautustyypillä.

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

Lähtö:

Function of derived class>

Lisätietoja on kohdassa Polymorfismin eri tyypit

24. Vertaa käännösajan polymorfismia ja ajonaikaista polymorfismia

Käännösajan polymorfismi

Ajonaikainen polymorfismi

Sitä kutsutaan myös staattiseksi sidoksiksi ja aikaiseksi sidoksiksi.Sitä kutsutaan myös nimellä dynaaminen sidonta ja myöhäinen sidonta.
Se on nopea, koska suoritus tunnetaan varhain käännöshetkellä.Se on hidasta käännösaikaan verrattuna, koska suoritus tunnetaan suorituksen aikana.
Se saavutetaan toimintojen ylikuormituksella ja käyttäjän ylikuormituksella.Se saavutetaan virtuaalisilla toiminnoilla ja toimintojen ohituksella.

Lisätietoja on kohdassa Käännösajan polymorfismi ja ajonaikainen polymorfismi

25. Selitä C++:n konstruktori.

Konstruktori on luokan erityinen jäsenfunktio, jonka nimi on sama kuin sillä luokalla, joka sen kutsuu ja joka alustaa arvon luokan objektille.

Rakentajia on 3 tyyppiä:

A. Oletuskonstruktori: Se on yksinkertaisin konstruktorityyppi, joka ei hyväksy argumentteja tai parametreja. Vaikka sitä ei kutsuttaisikaan, kääntäjä kutsuu sitä automaattisesti, kun objekti luodaan.

Esimerkki:

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


B. Parametrisoitu konstruktori: Se on eräänlainen konstruktori, joka hyväksyy argumentteja tai parametreja. Se on kutsuttava eksplisiittisesti välittämällä arvoja argumenteissa, koska nämä argumentit auttavat alustamaan objektin, kun se luodaan. Sillä on myös sama nimi kuin luokalla.

Sitä käytetään myös rakentajien ylikuormitukseen.

ekta kapoor näyttelijä

Esimerkki:

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

Lähtö

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

C. Kopioiden rakentaja: Kopiokonstruktori on jäsenfunktio, joka alustaa objektin käyttämällä toista saman luokan objektia. Myös Copy-konstruktori ottaa argumentiksi viittauksen saman luokan objektiin.

Esimerkki:

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


Lisätietoja on kohdassa Rakentajat

26. Mitä tuhoajat ovat C++:ssa?

Destruktorit ovat luokan funktioiden jäseniä, jotka poistavat objektin, kun luokan objekti menee soveltamisalan ulkopuolelle. Destruktoreilla on sama nimi kuin luokalla, jota edeltää aaltomerkki (~). Myös tuhoajat seuraavat a alaspäin lähestymistapaa, toisin kuin rakentajat, jotka seuraavat ylhäältä alas.

Syntaksi:

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

Lisätietoja on kohdassa Hävittäjä .

27. Mikä on virtuaalinen tuhoaja?

Kun tuhotaan johdetun luokan ilmentymiä tai objekteja käyttämällä perusluokan osoitinobjektia, virtuaalinen tuhoaja vapauttaa johdetun luokkaobjektin tai ilmentymän varaamaa muistitilaa.

Virtuaalidestruktori takaa, että ensin kutsutaan johdetun luokan tuhoajaa. Sitten perusluokan destruktoria kutsutaan vapauttamaan perintöluokassa kummankin destruktorin käyttämä tila, mikä säästää meidät muistivuodolta. On suositeltavaa tehdä destructoristasi virtuaalinen aina, kun luokkasi on polymorfinen.

Lisätietoja on kohdassa Virtuaalinen tuhoaja

28. Onko destruktorin ylikuormitus mahdollista? Jos kyllä, niin perustele ja jos ei niin miksi?

Yksinkertainen vastaus on EI Emme voi ylikuormittaa tuhoajaa. C++:ssa on pakollista käyttää vain destructor per luokka. Lisäksi Destructor ei ota argumentteja eikä niillä ole parametria, joka voi auttaa ylikuormituksessa.

C++-haastattelukysymykset – Keskitaso

29. Mitkä toiminnot ovat sallittuja osoittimille?

Osoittimet ovat muuttujia, joita käytetään tallentamaan toisen muuttujan osoitepaikka. Osoittimelle sallitut toiminnot ovat:

  1. Osoittimen lisäys/vähennys
  2. Kokonaisluvun lisääminen ja vähentäminen osoittimeen
  3. Samantyyppisten osoittimien vertailu

30. Mikä on sen tarkoitus poistaa operaattori?

Poista-operaattoria käytetään poistamaan/poistamaan kaikki ominaisuudet/ominaisuudet objektista vapauttamalla sen muisti; Lisäksi se palauttaa lopulta arvon tosi tai epätosi. Yksinkertaisesti sanottuna se tuhoaa tai vapauttaa taulukon ja ei-taulukon (osoitin) objektit, jotka on luotu uusilla lausekkeilla.

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

Lisätietoja on kohdassa Poista operaattori

31. Miten poista [] eroaa poistamisesta?

poistaa[]

poistaa

Sitä käytetään koko taulukon poistamiseenSitä käytetään vain yhden osoittimen poistamiseen
Sitä käytetään kohteiden poistamiseen Uusi[]; Tällä voimme sanoa sen poistaa[] käytetään poistamaan joukko objektejaSitä käytetään kohteiden poistamiseen Uusi; Tällä voimme sanoa sen poistaa käytetään yksittäisen objektin poistamiseen
Se voi kutsua niin monta tuhoajaa kuin haluaaSe voi kutsua luokan tuhoajaa vain kerran

32. Mitä tiedät ystäväluokasta ja ystävätoiminnasta?

Ystäväluokka on luokka, joka voi käyttää sekä suojattuja että yksityisiä muuttujia luokissa, joissa se on ilmoitettu ystäväksi.

Esimerkki ystäväluokasta:

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


Ystävätoiminto on toiminto, jolla päästään yksityisiin, suojattuihin ja julkisiin datajäseniin tai muiden luokkien jäsentoimintoihin. Se ilmoitetaan ystävä-avainsanalla. Ystäväfunktion etuna on, että se ei ole sidottu luokan laajuuteen ja kun se on ilmoitettu luokassa, sitä ei myöskään voi kutsua luokan objektilla; siksi sitä voidaan kutsua muilla funktioilla. Kaikki mainitut seikat huomioon ottaen voidaan sanoa, että ystäväfunktio on globaali funktio .

Esimerkki ystäväfunktiosta:

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


Lisätietoja on osoitteessa ystävätilaisuus ja ystäväluokka

33. Mikä on ylivuotovirhe?

Ylivuotovirhe ilmenee, kun luku on liian suuri tietotyypin käsittelemiseksi. Yksinkertaisesti sanottuna se on virhetyyppi, joka on voimassa määritellylle, mutta ylittää käytetyn määritellyn alueen, jossa sen pitäisi olla sama/olema.

yritä napata java

Esimerkiksi int-tietotyypin alue on –2 147 483 648 to 2,147,483,647 ja jos ilmoitamme koon muuttujan 2,247,483,648 se tuottaa ylivuotovirheen.

34. Mitä Scope Resolution -operaattori tekee?

Alueen erotteluoperaattori on merkitty ' :: ' symboli. Aivan kuten sen nimi, tämä operaattori ratkaisee ohjelman laajuuden esteen. Soveltamisalueen resoluutiooperaattoria käytetään viittaamaan jäsenfunktioon tai globaaliin muuttujaan sen soveltamisalan ulkopuolella, minkä lisäksi se voi päästä käsiksi myös ohjelman piilotettuun muuttujaan tai funktioon.

Scope Resolutiota käytetään useisiin eri tehtäviin:

  1. Voit käyttää globaalia muuttujaa, kun on olemassa samanniminen paikallinen muuttuja
  2. Luokan ulkopuolella olevan funktion määrittäminen
  3. Useamman perinnön tapauksessa
  4. Nimiavaruuteen

Lisätietoja on kohdassa Laajuusresoluutiooperaattori

35. Mitä ovat C++-pääsyn muokkaajat?

Luokan jäsenille määritetty pääsyrajoitus (olipa se sitten jäsentoiminto tai datajäsen) tunnetaan pääsyn muokkaajina/määrittelijöinä.

Pääsymuunnoksia on 3 tyyppiä:

  1. Yksityinen - Siihen ei pääse käsiksi eikä sitä voi tarkastella luokan ulkopuolelta
  2. Suojattu - Sitä voidaan käyttää, jos ja vain, jos aksessorina on johdettu luokka
  3. Julkinen - Sitä voi tarkastella tai katsella luokan ulkopuolelta

Lisätietoja on kohdassa Access Modifiers

36. Pystytkö kääntämään ohjelman ilman päätoimintoa?

Kyllä, on täysin mahdollista kääntää ohjelma ilman main(:ta). Esimerkiksi Käytä makroja, jotka määrittelevät pää

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

Lisätietoja on kohdassa Voitko kääntää ohjelman ilman päätoimintoa

37. Mikä on STL?

STL tunnetaan nimellä Standard Template Library, se on kirjasto, joka tarjoaa 4 komponenttia, kuten säiliön, algoritmit ja iteraattorit.

C++ STL

Lisätietoja on kohdassa STL C++:ssa

38. Määrittele rivifunktio. Voiko C++:ssa olla rekursiivinen rivifunktio?

Sisäinen funktio on pyynnön muoto, ei käsky kääntäjälle, joka johtaa funktiomme sisällyttämiseen pääfunktion runkoon. Inline-funktiosta voi tulla ylimääräistä, jos funktion suoritusaika on lyhyempi kuin kytkentäaika kutsujafunktiosta kutsuttuun toimintoon. Käytä avainsanaa tehdäksesi funktion upotettuna linjassa ennen funktiota ja määritä se ennen kuin funktiota kutsutaan.

Inline-toiminto

Sisäänrakennettu funktion selitys

Syntaksi:

inline data_type function_name() { Body; }>

Vastaus on Ei; Se ei voi olla rekursiivinen.

Sisäinen funktio ei voi olla rekursiivinen, koska rivifunktion tapauksessa koodi vain sijoitetaan paikkaan, josta sitä kutsutaan, eikä se säilytä pinossa rekursion kannalta tarpeellista tietoa.

Lisäksi, jos kirjoitat rivissä olevan avainsanan rekursiivisen funktion eteen, kääntäjä jättää sen automaattisesti huomioimatta, koska kääntäjä ottaa tekstin vain ehdotuksena.

Lisätietoja on kohdassa Inline-toiminto

39. Mikä on abstrakti luokka ja milloin käytät sitä?

Abstrakti luokka on luokka, joka on erityisesti suunniteltu käytettäväksi perusluokkana. Abstrakti luokka sisältää ainakin yhden puhtaan virtuaalisen funktion. Ilmoitat puhtaan virtuaalisen funktion käyttämällä a puhdas määrittäjä (= 0) virtuaalisen jäsenfunktion ilmoituksessa luokkailmoituksessa

Et voi käyttää abstraktia luokkaa parametrityyppinä, funktion palautustyyppinä tai eksplisiittisen muunnoksen tyyppinä, etkä myöskään voi ilmoittaa abstraktin luokan objektia. Sitä voidaan kuitenkin käyttää ilmoittamaan osoittimia ja viittauksia abstraktiin luokkaan.

kuinka int muunnetaan merkkijonoksi java

Abstraktia luokkaa käytetään, jos halutaan tarjota yhteinen, toteutettu toiminnallisuus komponentin kaikkien toteutusten kesken. Abstraktien luokkien avulla voit toteuttaa luokkasi osittain, kun taas rajapinnoilla ei olisi toteutusta millekään jäsenelle. Yksinkertaisesti sanottuna abstraktit luokat sopivat hyvin, jos haluat antaa lapsillesi toteutustietoja, mutta et halua sallia luokkasi esiintymän suoraan ilmentymistä.

40. Mitä ovat staattiset datajäsenet ja staattiset jäsenfunktiot?

Luokan staattinen datajäsen on normaali datajäsen, mutta sitä edeltää staattinen avainsana. Se suoritetaan ennen main()-funktiota ohjelmassa ja alustetaan arvoon 0, kun luokan ensimmäinen objekti luodaan. Se näkyy vain tietylle luokalle, mutta sen laajuus on elinikäinen.

Syntaksi:

  static Data_Type Data_Member;>

Staattinen jäsentoiminto on jäsentoiminto, jota käytetään muiden staattisten datajäsenien tai muiden staattisten jäsentoimintojen käyttämiseen. Se määritellään myös staattisella avainsanalla. Voimme käyttää staattista jäsenfunktiota luokan nimen tai luokkaobjektien avulla.

Syntaksi:

classname::function name(parameter);>

C++-haastattelukysymykset – asiantuntijataso

41. Mikä on avainsanan haihtuva käyttötarkoitus?

Aivan kuten sen nimi, asiat voivat muuttua yhtäkkiä ja odottamattomasti; Joten sitä käytetään ilmoittamaan kääntäjälle, että arvo voi muuttua milloin tahansa. Lisäksi haihtuva avainsana estää kääntäjää suorittamasta koodin optimointia. Se oli tarkoitettu käytettäväksi liitettäessä muistikartoitettuja laitteita, signaalinkäsittelijöitä ja konekoodiohjeita.

Katso lisätietoja tästä Haihtuva

42. Määritä tallennusluokka C++:ssa ja nimeä joitakin

Tallennusluokkaa käytetään määrittämään muuttujan tai funktion ominaisuudet (elinikä ja näkyvyys). Nämä ominaisuudet auttavat yleensä jäljittämään muuttujan olemassaolon ohjelman ajon aikana.

Syntaksi:

storage_class var_data_type var_name;>

Joitakin säilytysluokkia:

Esimerkkejä säilytysluokista

Lisätietoja on kohdassa Varastointiluokka

43. Mikä on muuttuva tallennusluokan määrittäjä? Miten niitä voidaan käyttää?

Kuten sen nimeä, muunnettavissa olevaa tallennusluokkamääritystä käytetään vain luokan tietojäsenessä, jotta se olisi muokattavissa, vaikka jäsen on osa objektia, joka on ilmoitettu const. Staattiset tai const- tai viitejäsenet eivät voi käyttää muuttuvaa määritettä. Kun julistamme funktion const, tästä funktiolle välitetystä osoittimesta tulee const.

44. Määritä Block Scope -muuttuja.

Joten muuttujan laajuus on alue, jossa muuttuja on käytettävissä. Alueita on kaksi, A globaali ja lohko tai paikallinen.

Lohkon laajuusmuuttuja tunnetaan myös paikallisena laajuusmuuttujana. Muuttuja, joka määritellään funktion sisällä (kuten main) tai lohkon sisällä (kuten silmukat ja if-lohkot), on paikallinen muuttuja. Sitä voidaan käyttää VAIN siinä funktiossa/lohkossa, jossa se on ilmoitettu. lohkolaajuinen muuttuja ei ole käytettävissä lohkon ulkopuolella, vaikka lohko olisi funktion sisällä.

Lisätietoja on kohdassa Muuttujan laajuus

45. Mikä on avainsanan Auto tehtävä?

Automaattista avainsanaa voidaan käyttää monimutkaisen tyyppisen muuttujan ilmoittamiseen yksinkertaisella tavalla. Voit käyttää autoa muuttujan ilmoittamiseen, jos alustuslause sisältää malleja, osoittimia funktioihin, viittauksia jäseniin jne. Tyyppipäätelmien avulla voimme käyttää vähemmän aikaa kääntäjän jo tuntemien asioiden kirjoittamiseen. Koska kaikki tyypit päätellään vain kääntäjävaiheessa, käännösaika pitenee hieman, mutta se ei vaikuta ohjelman ajoaikaan.

Lisätietoja on kohdassa Autot C++:ssa

46. ​​Määrittele nimiavaruus C++:ssa.

Nimiavaruuksien avulla voimme järjestää nimetyt kohteet, joilla muuten olisi globaali laajuus, pienempiin laajuuksiin, jolloin voimme antaa niille nimiavaruuden laajuuden. Tämä mahdollistaa ohjelman osien järjestämisen erillisiksi loogisiksi alueiksi, joissa on nimet. Nimiavaruus tarjoaa paikan, jossa voit määrittää tai ilmoittaa tunnisteita, kuten muuttujia, menetelmiä ja luokkia.

Tai voisimme sanoa, että nimiavaruus on deklaratiivinen vyöhyke, joka antaa sen sisällä oleville tunnisteille (tyyppien, funktioiden, muuttujien ja niin edelleen) laajuuden. Nimiavaruuksia käytetään koodin järjestämiseen loogisiin luokkiin ja nimiristiriitojen välttämiseen, joita voi tapahtua, kun koodikannassasi on useita kirjastoja.

Lisätietoja on kohdassa Nimiavaruus C++:ssa

47. Milloin void()-palautustyyppiä käytetään?

Void-avainsana, kun sitä käytetään funktion palautustyyppinä, osoittaa, että funktio ei palauta arvoa. Kun sitä käytetään funktion parametriluettelona, ​​void tarkoittaa, että funktio ei ota parametreja. Ei-arvon palauttavat funktiot tunnetaan myös void-funktioina. Niitä kutsutaan tyhjiksi, koska niitä ei ole suunniteltu palauttamaan mitään. Totta, mutta vain osittain. Emme voi palauttaa arvoja void-funktioista, mutta voimme varmasti palauttaa jotain. Vaikka void-funktioilla ei ole palautustyyppiä, ne voivat palauttaa arvoja.

Lisätietoja on kohdassa Tyhjä palautustyyppi .

48. Mitä eroa on matalakopiolla ja syväkopiolla?

matala kopio

Syvä kopio

Shallow-kopiossa alkuperäisen objektin kopio tallennetaan ja vain viiteosoite kopioidaan lopulta. Yksinkertaisesti sanottuna matala kopio kopioidaan mahdollisimman vähänDeep copy -tilassa sekä alkuperäisen objektin kopio että toistuvat kopiot tallennetaan. Yksinkertaisesti sanottuna Deep copy kopioi kaiken
Matala kopio kokoelmasta on kopio kokoelmarakenteesta, ei elementeistä. Matalan kopion ansiosta kaksi kokoelmaa jakavat nyt yksittäisiä elementtejä.Kokoelman syväkopio on kaksi kokoelmaa, joissa kaikki alkuperäisen kokoelman elementit on kopioitu.
Matala kopio on nopeampiSyväkopiointi on verrattain hitaampaa.

Lisätietoja on kohdassa Matala kopio VS Deep Copy

49. Voimmeko kutsua virtuaalifunktiota konstruktorista?

Kyllä, voimme kutsua virtuaalifunktiota konstruktorilta. Mutta se voi tehdä poikkeuksen ohittamisesta.

50. Mitä tyhjät osoittimet ovat?

Aivan kuten sen nimi, tyhjä osoitin on osoitin, joka ei liity mihinkään tai mihinkään tietotyyppiin. Siitä huolimatta tyhjä osoitin voi sisältää minkä tahansa tyyppisen osoitearvon ja se voidaan muuntaa tietotyypistä toiseen.

Lisätietoja saa osoitteesta Void Pointer C++:ssa

Bonuskysymys:

Mikä on ' Tämä 'osoitin C++:ssa?

Tämä osoitin mahdollistaa jokaisen objektin pääsyn omaan osoitteeseen olennaisen osoittimen kautta. Kaikki jäsentoiminnot kestävät Tämä osoitin implisiittisenä argumenttina. Tämä osoitin voidaan käyttää viittaamaan kutsuvaan objektiin jäsenfunktion sisällä.

  • Tämä osoitinta käytetään siirtämään objekti parametrina toiselle menetelmälle.
  • Jokainen objekti saa oman kopion tietojäsenestä.
  • Tämä osoitinta käytetään indeksoijien ilmoittamiseen.

Lisätietoja on kohdassa Tämä osoitin C++:ssa