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ä.

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 :
- C++ on OOPs-kieli, mikä tarkoittaa, että dataa pidetään objekteina.
- C++ on usean paradigman kieli; Yksinkertaisesti sanottuna se tarkoittaa, että voimme ohjelmoida ohjelman logiikan, rakenteen ja menettelyn.
- Muistinhallinta on C++:n keskeinen ominaisuus, koska se mahdollistaa dynaamisen muistin allokoinnin
- 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?

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:
- Avainsanat – Niillä on kääntäjälle erityinen merkitys
- Tunnisteet – Niillä on ainutlaatuinen arvo/identiteetti
- Vakiot – Se ei koskaan muuta niiden arvoa koko ohjelman ajan
- jouset – Se sisältää homogeenisen datasarjan
- Erikoissymbolit – Niillä on jokin erityinen merkitys, eikä niitä voida käyttää muuhun tarkoitukseen; esim: [] () {}, ; * = #
- 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 objekteja | Se 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 ylikuormitusta | Se tukee toimintoa ja operaattorin ylikuormitusta |
| Se on funktioohjattu kieli | Se 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 julkisia | Luokan 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 pinoina | Luokkien 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ää uudelleen | Osoittimen arvo voidaan määrittää uudelleen |
| Se ei voi koskaan pitää a tyhjä arvo, koska se tarvitsee olemassa olevan arvon tullakseen aliakseksi | Se voi pitää tai osoittaa a tyhjä arvoa ja sitä kutsutaan nimellä a nullptr tai nolla osoitin |
| Se ei voi toimia taulukoiden kanssa | Se 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ää suoraan | Osoittimen 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 funktiosta | Se 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:
| Esimerkki käyttäjän ylikuormituksesta:
|
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 silmukaksi | Do-while-silmukkaa kutsutaan poistumisohjaussilmukaksi |
| Jos ehto ei täyty, silmukan sisällä olevia lauseita ei suoriteta | Vaikka 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 edelle | Se tarkoittaa yksinkertaisesti operaattorin laittamista operandin perään |
| Se toteuttaa itsensä ennen '; ' | Se toteuttaa itsensä jälkeenpäin '; ' |
| Etuliitteen ++ assosiaatio on oikealta vasemmalle | Postfix ++: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 toiminnon | malloc on funktio, joka palauttaa ja hyväksyy arvoja |
| uusia kutsuja rakentajia | malloc ei voi kutsua konstruktoria |
| new on nopeampi kuin malloc, koska se on operaattori | malloc on hitaampi kuin uusi, koska se on funktio |
| new palauttaa tarkan tietotyypin | malloc 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ä
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ä:
- Kokoa aikapolymorfismi
- Toimintojen ylikuormitus
- Kuljettajan ylikuormitus
- 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
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++ 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:
- Osoittimen lisäys/vähennys
- Kokonaisluvun lisääminen ja vähentäminen osoittimeen
- 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 poistamiseen | Sitä 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 objekteja | Sitä 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 haluaa | Se 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:
- Voit käyttää globaalia muuttujaa, kun on olemassa samanniminen paikallinen muuttuja
- Luokan ulkopuolella olevan funktion määrittäminen
- Useamman perinnön tapauksessa
- 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ä:
- Yksityinen - Siihen ei pääse käsiksi eikä sitä voi tarkastella luokan ulkopuolelta
- Suojattu - Sitä voidaan käyttää, jos ja vain, jos aksessorina on johdettu luokka
- 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.

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än | Deep 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 nopeampi | Syvä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