C++ – de meest bekende en favoriete programmeertaal aller tijden van programmeurs. Het is nog steeds actueel, net als halverwege de jaren tachtig. Omdat het een objectgeoriënteerde programmeertaal voor algemeen gebruik is, wordt deze taal meestal elke keer tijdens het coderen uitgebreid gebruikt. Als gevolg hiervan vereisen sommige functies dat mensen vloeiend C++ beheersen. Het wordt gebruikt door top IT-bedrijven zoals Evernote, LinkedIn, Microsoft, Opera, NASA , En Meta vanwege de betrouwbaarheid, prestaties en het brede scala aan instellingen waarin het kan worden gebruikt. Om bij deze bedrijven binnen te komen, moet je er dus grondig in zijn top 50 C++ interviewvragen waardoor je voor recruiters een expert kunt lijken.

Om u klaar te maken voor een sollicitatiegesprek, hebben we de Top 50 C++ interviewvragen voor beginner, gemiddeld en ervaren die je zeker moet doorlopen om bij top-multinationals te worden geplaatst.
C++ sollicitatievragen voor eerstejaarsstudenten
1. Wat is C++? Wat zijn de voordelen van C++?
C++ is een objectgeoriënteerde programmeertaal die werd geïntroduceerd om de rechtsgebieden te overwinnen waar C ontbrak. Met objectgeoriënteerd bedoelen we dat het werkt met het concept van polymorfisme , erfenis , abstractie , inkapseling , object en klasse .
Voordelen van C++ :
- C++ is een OOPs-taal, wat betekent dat de gegevens als objecten worden beschouwd.
- C++ is een taal met meerdere paradigma's; Simpel gezegd betekent dit dat we de logica, structuur en procedure van het programma kunnen programmeren.
- Geheugenbeheer is een belangrijk kenmerk van C++ omdat het dynamische geheugentoewijzing mogelijk maakt
- Het is een programmeertaal op gemiddeld niveau, wat betekent dat het games, desktopapplicaties, stuurprogramma's en kernels kan ontwikkelen
Om meer te lezen, raadpleeg het artikel – Wat zijn de voordelen van C++?
2. Wat zijn de verschillende gegevenstypen in C++?

Verschillende soorten gegevenstypen in C++
Voor meer informatie, zie ' soa' is ook bekend als Standaard of kan worden geïnterpreteerd als een naamruimte. Het bevel namespace std; gebruiken informeert de compiler om alles onder de std-naamruimte en hen inprenten in de globale naamruimte . Het is voor ons nuttig om deze hele inprenting van de mondiale naamruimte te gebruiken uit En aan het eten zonder te gebruiken std::_operator_.
Voor meer informatie, zie naamruimte en std .
4. Wat zijn referenties in C++?
Wanneer een variabele als referentie wordt beschreven, wordt deze een alias van de reeds bestaande variabele. Simpel gezegd is een variabele waarnaar wordt verwezen een andere benoemde variabele van een bestaande variabele, waarbij u er rekening mee houdt dat wijzigingen die in de referentievariabele worden aangebracht, zullen worden weerspiegeld in de reeds bestaande variabele. Een referentievariabele wordt voorafgegaan door a '&' symbool.
Syntaxis:
int GFG = 10; // reference variable int& ref = GFG;>
Voor meer informatie, zie referenties in C++
5. Wat bedoel je met Call by Value en Call by Reference?
In deze programmeertaal hebben we 2 methoden om een functie aan te roepen: Bellen op waarde En Bellen via referentie
Bellen op waarde | Bellen via referentie |
|---|---|
| Er wordt een kopie van een variabele doorgegeven. | Een variabele zelf wordt fundamenteel doorgegeven. |
| Een functie aanroepen door de waarden te verzenden door variabelen te kopiëren. | Een functie aanroepen door het adres van de doorgegeven variabele te verzenden. |
| De wijzigingen die in de functie worden aangebracht, worden nooit buiten de functie op de variabele weerspiegeld. Kortom, de oorspronkelijke waarde wordt nooit gewijzigd in Call by Value. | De wijzigingen die in de functies zijn aangebracht, zijn buiten de functie op de doorgegeven functie te zien. Kortom, de oorspronkelijke waarde wordt in Call by reference gewijzigd. |
| Doorgegeven actuele en formele parameters worden op verschillende geheugenlocaties opgeslagen. Daarom is Call by Value een beetje geheugen onvoldoende | Doorgegeven actuele en formele parameters worden op dezelfde geheugenlocatie opgeslagen. Daarom wordt Call by Reference iets geheugenefficiënter. |
Voor informatie, zie het verschil tussen bellen op waarde en bellen op referentie
6. Definieer token in C++
Een token is het kleinste individuele element van een programma dat door een compiler wordt begrepen. Een token omvat het volgende:
- Trefwoorden – Die een speciale betekenis hebben voor de compiler
- Identificatiegegevens – Die een unieke waarde/identiteit hebben
- Constanten – Dat verandert nooit hun waarde gedurende het hele programma
- Snaren – Dat bevat de homogene reeks gegevens
- Speciale symbolen – Ze hebben een speciale betekenis en kunnen niet voor een ander doel worden gebruikt; bijvoorbeeld: [] () {}, ; * = #
- Exploitanten – Wie bewerkingen op de operand uitvoert
Voor meer informatie, zie Tokens in C++
7. Wat is het verschil tussen C en C++?
C | C++ |
|---|---|
| Het is een procedurele programmeertaal. In eenvoudige woorden: het ondersteunt geen klassen en objecten | Het is een mix van zowel procedurele als objectgeoriënteerde programmeertalen. In eenvoudige bewoordingen ondersteunt het klassen en objecten. |
| Het ondersteunt geen OOP-concepten zoals polymorfisme, data-abstractie, inkapseling, klassen en objecten. | Het ondersteunt alle concepten van data |
| Het ondersteunt geen functie- en operatoroverbelasting | Het ondersteunt respectievelijk Functie- en Operator-overbelasting |
| Het is een functiegestuurde taal | Het is een objectgestuurde taal |
Voor meer informatie, zie Verschil tussen C en C++
8. Wat is het verschil tussen struct en klasse?
Structuur | Klas |
|---|---|
| Leden van de struct bevinden zich standaard altijd in de openbare modus | Leden van de klas kunnen zich in de privé-, beschermde en openbare modus bevinden. |
| Structuren zijn van het waardetype. Ze hebben alleen waarde in het geheugen. | De klassen zijn van het referentietype. Het bevat een referentie van een object in het geheugen. |
| Het geheugen in structuren wordt opgeslagen als stapels | Het geheugen in klassen wordt opgeslagen als heaps. |
Voor meer informatie, zie de Verschil tussen struct en klasse.
9. Wat is het verschil tussen referentie en aanwijzer?
Referentie Java-datastructuren | Wijzer |
|---|---|
| De waarde van een referentie kan niet opnieuw worden toegewezen | De waarde van een pointer kan opnieuw worden toegewezen |
| Het kan nooit een nul waarde omdat het een bestaande waarde nodig heeft om een alias van te worden | Het kan vasthouden of wijzen naar een nul waarde en worden genoemd als een nulptr of nul punten |
| Het kan niet werken met arrays | Het kan werken met arrays |
| Om toegang te krijgen tot de leden van klasse/struct gebruikt het een ‘ . ' | Om toegang te krijgen tot de leden van klasse/struct gebruikt het een ‘ -> ' |
| De geheugenlocatie van de referentie is eenvoudig toegankelijk of kan direct worden gebruikt | De geheugenlocatie van een pointer is niet gemakkelijk toegankelijk omdat we een dereferentie moeten gebruiken ‘ * ' |
Voor meer informatie, zie de Verschil tussen referentie en aanwijzer
10. Wat is het verschil tussen overbelasting van functies en overbelasting van de operator?
Functie Overbelasting | Overbelasting van de machinist |
|---|---|
| Het definieert in feite een functie op talloze manieren, zodat er veel manieren zijn om deze aan te roepen of, in eenvoudige bewoordingen, dat je meerdere versies van dezelfde functie hebt | Het is in feite het oefenen van het geven van een speciale betekenis aan de bestaande betekenis van een operator of het in eenvoudige bewoordingen herdefiniëren van de vooraf opnieuw gedefinieerde betekenis |
| Geparametriseerde functies zijn een goed voorbeeld van functieoverbelasting, omdat u door het argument of de parameter van een functie te wijzigen deze bruikbaar maakt voor verschillende doeleinden | Polymorfisme is een goed voorbeeld van overbelasting van een operator, aangezien een object van toewijzingsklasse door verschillende klassen voor verschillende doeleinden kan worden gebruikt en aangeroepen |
Voorbeeld van functieoverbelasting:
| Voorbeeld van overbelasting van de operator:
|
Voor meer informatie, zie Overbelasting van de machinist En Functie Overbelasting
11. Wat is het verschil tussen een array en een lijst?
Arrays | Lijsten |
|---|---|
| Array zijn aaneengesloten geheugenlocaties van homogene gegevenstypen die op een vaste locatie of grootte zijn opgeslagen. | Lijsten zijn klassieke individuele elementen die met behulp van verwijzingen met elkaar worden verbonden of verbonden en geen vaste grootte hebben. |
| Arrays zijn statisch van aard. | Lijsten zijn dynamisch van aard |
| Gebruikt minder geheugen dan gekoppelde lijsten. | Gebruikt meer geheugen omdat het de waarde en de pointergeheugenlocatie moet opslaan |
Voor meer informatie, zie Arrays versus lijst
12. Wat is het verschil tussen een while-lus en een do-while-lus?
Herhalingslus | doe-terwijl-lus |
|---|---|
| Terwijl de lus ook wel een ingangsgestuurde lus wordt genoemd | De do-while-lus wordt een exit-controlelus genoemd |
| Als niet aan de voorwaarde wordt voldaan, worden de instructies in de lus niet uitgevoerd | Zelfs als niet aan de voorwaarde is voldaan, worden de instructies in de lus minstens één keer uitgevoerd |
Voorbeeld van een while-lus: terwijl(voorwaarde) {uit te voeren instructies;}; | Voorbeeld van een do-while-lus: Doen { uit te voeren verklaringen; } while(voorwaarde of expressie); |
Voor meer informatie, zie de Verschil tussen while- en do-while-lus
13. Bespreek het verschil tussen voorvoegsel en achtervoegsel?
voorvoegsel | achtervoegsel Java-lijst naar array |
|---|---|
| Het betekent eenvoudigweg dat u de operator vóór de operand plaatst | Het betekent eenvoudigweg dat u de operator na de operand plaatst |
| Het voert zichzelf eerder uit '; ' | Het voert zichzelf daarna uit '; ' |
| Associativiteit van voorvoegsel ++ is van rechts naar links | Associativiteit van achtervoegsel ++ is van links naar rechts |
Voor meer informatie, zie de Verschil tussen voorvoegsel en achtervoegsel
14. Wat is het verschil tussen new en malloc()?
nieuw | malloc() |
|---|---|
| nieuw is een operator die een bewerking uitvoert | malloc is een functie die waarden retourneert en accepteert |
| new roept de constructeurs op | Malloc kan geen constructor aanroepen |
| new is sneller dan malloc omdat het een operator is | malloc is langzamer dan nieuw omdat het een functie is |
| new retourneert het exacte gegevenstype | malloc retourneert ongeldig* |
Voor meer informatie, zie Verschil tussen nieuw en malloc()
15. Wat is het verschil tussen virtuele functies en puur virtuele functies?
Virtuele functie | Puur virtuele functie |
|---|---|
| Een virtuele functie is een lidfunctie van een basisklasse die opnieuw kan worden gedefinieerd in een andere afgeleide klasse. | Een Pure Virtual Function is een lidfunctie van een basisklasse die alleen in een basisklasse wordt gedeclareerd en in een afgeleide klasse wordt gedefinieerd om te voorkomen dat deze een abstracte klasse wordt. |
| Een virtuele functie heeft zijn definitie in zijn respectieve basisklasse. | Er is geen definitie in Pure Virtual Function en wordt geïnitialiseerd met een pure specificatie (= 0). |
| De basisklasse heeft een virtuele functie die kan worden weergegeven of geïnstantieerd; In eenvoudige woorden: het doel ervan kan worden gemaakt. | Een basisklasse met een pure virtuele functie wordt abstract en kan niet worden weergegeven of geïnstantieerd; In eenvoudige bewoordingen betekent dit dat het object ervan niet gemaakt kan worden. |
Voor meer informatie, zie de Verschil tussen virtuele functies en pure virtuele functies
16. Wat zijn klassen en objecten in C++?
Een klasse is een door de gebruiker gedefinieerd gegevenstype waarbij alle lidfuncties en gegevensleden op maat zijn gemaakt volgens de eisen en vereisten. Bovendien zijn deze allemaal toegankelijk met behulp van een voorwerp . Om een door de gebruiker gedefinieerd gegevenstype te declareren, gebruiken we een trefwoord klas.
Een object is een instantie van een klasse en een entiteit met waarde en status; In eenvoudige bewoordingen wordt het gebruikt als katalysator of om een klasselid te vertegenwoordigen. Het kan verschillende parameters bevatten of geen.
Opmerking: Een klasse is een blauwdruk die functies definieert die door een object worden gebruikt.
Raadpleeg dit voor meer informatie Wat zijn klassen en objecten
17. Wat is functieoverschrijving?
Wanneer een functie met dezelfde naam, dezelfde argumenten of parameters en hetzelfde retourtype dat al aanwezig/gedeclareerd is in de basisklasse, wordt gebruikt in een afgeleide klasse, staat dit bekend als Function Overriding. Het is een voorbeeld van Runtime Polymorphism of Late Binding, wat betekent dat de overschreven functie wordt uitgevoerd tijdens de runtime van de uitvoering.
Voor meer informatie, zie Functie overschrijven in C++
18. Wat zijn de verschillende OOP-concepten in C++?
- Klassen : Het is een door de gebruiker gedefinieerd gegevenstype
- Voorwerpen : Het is een instantie van een klasse
- Abstractie: Het is een techniek waarbij alleen noodzakelijke details worden weergegeven
- Inkapseling: Verpakken van gegevens in één eenheid
- Erfenis: Het vermogen van een klasse om eigenschappen en kenmerken af te leiden van een andere klasse
- Polymorfisme: Polymorfisme staat bekend als vele vormen van hetzelfde
Voor meer informatie, zie Verschillende OOPs-concepten in C++
19. Overerving uitleggen
Het vermogen of vermogen van een klasse om eigenschappen en kenmerken af te leiden van een andere klasse staat bekend als overerving. In eenvoudige bewoordingen is het een systeem of techniek voor het hergebruiken en uitbreiden van bestaande klassen zonder ze te wijzigen.
Voor meer informatie, zie Erfenis
20. Wanneer moeten we meervoudige overerving gebruiken?
Meerdere overervingen betekenen dat een afgeleide klasse twee of meer basis-/ouderklassen kan erven. Het is nuttig wanneer een afgeleide klasse talrijke attributen/contracten moet combineren en een deel of de gehele implementatie van deze attributen/contracten moet erven. Om een voorbeeld uit de praktijk te nemen, denk eens aan je ouders, waarbij ouder A je vader is. Ouder B is je moeder en kind C ben jij.

Meerdere erfenissen
Voor meer informatie, zie Meerdere erfenis .
21. Wat is virtuele overerving?
Virtuele overerving is een techniek die ervoor zorgt dat slechts één kopie van de lidvariabelen van een basisklasse wordt overgenomen door van kleinkind afgeleide klassen. Of in eenvoudige bewoordingen: virtuele overerving wordt gebruikt wanneer we te maken hebben met een situatie van meerdere overervingen, maar willen voorkomen dat meerdere exemplaren van dezelfde klasse in de overervingshiërarchie verschijnen.
22. Wat is polymorfisme in C++?
Polymorfisme staat bekend als vele vormen van hetzelfde. In eenvoudige bewoordingen kunnen we zeggen dat polymorfisme de mogelijkheid is om een lidfunctie in meerdere vormen weer te geven, afhankelijk van het type object dat ze aanroept.
Met andere woorden, we kunnen ook zeggen dat een man een werknemer van iemand kan zijn, een zoon van iemand, een vader van iemand, en een echtgenoot van iemand; dit is hoe polymorfisme in het echte leven kan worden geprojecteerd.
Er zijn 2 soorten polymorfisme:
- Compileer tijdpolymorfisme
- Functie Overbelasting
- Overbelasting van de machinist
- Runtime-polymorfisme
- Functie overschrijven
- Virtuele functie
Als u er meer over wilt weten, raadpleegt u Polymorfisme
23. Wat zijn de verschillende soorten polymorfisme in C++?
Er zijn 2 soorten polymorfisme
Compileertijdpolymorfisme of statische binding
Dit type polymorfisme wordt bereikt tijdens het compileren van het programma, wat ertoe leidt dat het iets sneller wordt gemaakt dan de Run-time. Ook de erfenis is er niet bij betrokken. Het bestaat uit 2 verdere technieken :
Functie-overbelasting: Als er meerdere functies zijn met dezelfde naam maar met verschillende parameters, wordt dit functieoverbelasting genoemd.
C++ // same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>
Overbelasting van de machinist: Het is in feite het oefenen van het geven van een speciale betekenis aan de bestaande betekenis van een operator of het in eenvoudige bewoordingen herdefiniëren van de vooraf opnieuw gedefinieerde betekenis
class GFG { // private and other modes statements public returnType operator symbol(arguments){ statements } statements };>
Runtime-polymorfisme of late binding
Runtimepolymorfisme vindt plaats wanneer functies worden aangeroepen tijdens runtime.
Functie overschrijven: Het overschrijven van functies vindt plaats wanneer een lidfunctie van een basisklasse opnieuw wordt gedefinieerd in een afgeleide klasse met dezelfde argumenten en hetzelfde retourtype.
// 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; }> Uitgang:
Java-operatoren
Function of derived class>
Voor meer informatie, zie Verschillende soorten polymorfisme
24. Vergelijk het polymorfisme tijdens het compileren en het polymorfisme tijdens de runtime
Compile-time polymorfisme | Runtime-polymorfisme |
|---|---|
| Het wordt ook wel statische binding en vroege binding genoemd. | Het wordt ook wel dynamische binding en late binding genoemd. |
| Het is snel omdat de uitvoering al vroeg tijdens het compileren bekend is. | Het is traag in vergelijking met het compileren, omdat de uitvoering tijdens runtime bekend is. |
| Dit wordt bereikt door overbelasting van functies en overbelasting van de operator. | Dit wordt bereikt door virtuele functies en het overschrijven van functies. |
Voor meer informatie, zie Compile-time polymorfisme en Runtime polymorfisme
25. Leg de constructor in C++ uit.
Een constructor is een speciaal type lidfunctie van een klasse, waarvan de naam dezelfde is als die van de klasse door wie deze wordt aangeroepen en die waarde initialiseert voor het object van een klasse.
Er zijn 3 soorten constructeurs:
A. Standaardconstructor: Het is het meest basale type constructor dat geen argumenten of parameters accepteert. Zelfs als het niet wordt aangeroepen, roept de compiler het automatisch aan wanneer een object wordt gemaakt.
Voorbeeld:
C++ class Class_name { public: Class_name() { cout << 'I am a default constructor'; } };>
B. Geparametriseerde constructor: Het is een type constructor dat argumenten of parameters accepteert. Het moet expliciet worden aangeroepen door waarden in de argumenten door te geven, aangezien deze argumenten helpen bij het initialiseren van een object wanneer het wordt gemaakt. Het heeft ook dezelfde naam als die van de klasse.
Het wordt ook gebruikt om constructors te overbelasten.
Voorbeeld:
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; }> Uitvoer
G.x = 10, G.y = 15>
C. Kopieerconstructeur: Een kopieerconstructor is een lidfunctie die een object initialiseert met behulp van een ander object van dezelfde klasse. Ook neemt de Copy-constructor een verwijzing naar een object van dezelfde klasse als argument.
Voorbeeld:
C++ Sample(Sample& t) { id = t.id; }>
Voor meer informatie, zie Constructeurs
26. Wat zijn destructors in C++?
Destructors zijn leden van functies in een klasse die een object verwijderen wanneer een object van de klasse buiten bereik valt. Destructors hebben dezelfde naam als de klasse, voorafgegaan door een tildeteken (~). Ook volgen destructors a van beneden naar boven aanpak, in tegenstelling tot constructeurs die van boven naar beneden werken.
Syntaxis:
~constructor_name(); // tilde sign signifies that it is a destructor>
Voor meer informatie, zie Torpedojager .
27. Wat is een virtuele destructor?
Bij het vernietigen van instanties of objecten van een afgeleide klasse met behulp van een pointerobject van de basisklasse, wordt een virtuele destructor aangeroepen om geheugenruimte vrij te maken die is toegewezen door het afgeleide klasseobject of de afgeleide klasse.
Virtuele destructor garandeert dat eerst de destructor van de afgeleide klasse wordt aangeroepen. Vervolgens wordt de destructor van de basisklasse aangeroepen om de ruimte vrij te geven die wordt ingenomen door beide destructors in de overervingsklasse, wat ons redt van het geheugenlek. Het is raadzaam om uw destructor virtueel te maken wanneer uw klasse polymorf is.
Voor meer informatie, zie Virtuele vernietiger
28. Is overbelasting van de destructor mogelijk? Zo ja, leg dit dan uit en zo nee, waarom?
Het simpele antwoord is NEE we kunnen een destructor niet overbelasten. Het is verplicht om alleen destructor per klasse te gebruiken in C++. Ook om te vermelden: Destructor neemt geen argumenten en heeft ook geen parameter die kan helpen bij overbelasting.
C++ sollicitatievragen – gemiddeld niveau
29. Welke bewerkingen zijn toegestaan op pointers?
Pointers zijn de variabelen die worden gebruikt om de adreslocatie van een andere variabele op te slaan. Bewerkingen die zijn toegestaan voor een pointer zijn:
- Verhogen/verlagen van een aanwijzer
- Optellen en aftrekken van een geheel getal tot een aanwijzer
- Vergelijking van wijzers van hetzelfde type
30. Wat is het doel van de verwijderen exploitant?
De verwijderoperator wordt gebruikt om alle kenmerken/eigenschappen van een object te verwijderen/verwijderen door de toewijzing van het geheugen ervan ongedaan te maken; bovendien retourneert het uiteindelijk waar of onwaar. In eenvoudige termen: het vernietigt of maakt de toewijzing van array- en niet-array(pointer)-objecten die door nieuwe expressies zijn gemaakt, ongedaan.
C++ int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>
Voor meer informatie, zie Operator verwijderen
31. Hoe verschilt verwijderen [] van verwijderen?
verwijderen[] | verwijderen |
|---|---|
| Het wordt gebruikt voor het verwijderen van een hele array | Het wordt gebruikt om slechts één enkele aanwijzer te verwijderen |
| Het wordt gebruikt voor het verwijderen van de objecten van nieuw[]; Hierdoor kunnen we dat zeggen verwijderen[] wordt gebruikt om een reeks objecten te verwijderen | Het wordt gebruikt voor het verwijderen van de objecten van nieuw; Hierdoor kunnen we dat zeggen verwijderen wordt gebruikt om een enkel object te verwijderen |
| Het kan zoveel destructors oproepen als het wil | Het kan de destructor van een klasse slechts één keer aanroepen |
32. Wat weet je over vriendenklasse en vriendenfunctie?
Een vriendenklasse is een klasse die toegang heeft tot zowel de beschermde als de privévariabelen van de klassen waarin deze als vriend is gedeclareerd.
Voorbeeld van een vriendenklasse:
C++ class Class_1st { // ClassB is a friend class of ClassA friend class Class_2nd; statements; } class Class_2nd { statements; }>
Een vriendenfunctie is een functie die wordt gebruikt om toegang te krijgen tot de privé-, beschermde en openbare gegevens van leden of ledenfuncties van andere klassen. Het wordt gedeclareerd met een vriend-trefwoord. Het voordeel van een vriendfunctie is dat deze niet gebonden is aan de reikwijdte van de klasse en als deze eenmaal in een klasse is gedeclareerd, kan deze bovendien niet door een object van de klasse worden aangeroepen; daarom kan het door andere functies worden aangeroepen. Als we alle genoemde punten in ogenschouw nemen, kunnen we zeggen dat een vriendfunctie een globale functie is .
Voorbeeld van een vriendfunctie:
C++ class GFG { statements; friend dataype function_Name(arguments); statements; } OR class GFG { statements' friend int divide(10, 5); statements; }>
Voor meer informatie, zie de vriendenfunctie en vriendenklasse
33. Wat is een overloopfout?
Overflow-fout treedt op wanneer het getal te groot is om door het gegevenstype te kunnen worden verwerkt. In eenvoudige bewoordingen is het een type fout dat geldig is voor het gedefinieerde, maar het gedefinieerde bereik overschrijdt waar het zou moeten samenvallen/liggen.
Het bereik van het int-gegevenstype is bijvoorbeeld –2.147.483.648 naar 2.147.483.647 en als we een variabele van grootte declareren 2.247.483.648 het zal een overloopfout genereren.
34. Wat doet de Scope Resolution-operator?
Een scoperesolutie-operator wordt aangegeven met een ‘ :: ‘ symbool. Net als zijn naam lost deze operator de reikwijdtebarrière in een programma op. Een scope-resolutie-operator wordt gebruikt om naar een lidfunctie of een globale variabele buiten hun bereik te verwijzen, waartoe deze ook toegang heeft tot de verborgen variabele of functie in een programma.
Scope Resolution wordt gebruikt voor een groot aantal taken:
- Om toegang te krijgen tot een globale variabele als er een lokale variabele met dezelfde naam is
- Om de functie buiten de klasse te definiëren
- Bij meerdere erfenissen
- Voor naamruimte
Voor meer informatie, zie Operator voor scoperesolutie
35. Wat zijn de C++-toegangsmodificatoren?
De toegangsbeperking die is gespecificeerd voor de klasseleden (of het nu om een lidfunctie of om een datalid gaat) staat bekend als toegangsmodificatoren/specificaties.
Er zijn 3 soorten toegangsmodificatoren:
- Privaat - Het is niet toegankelijk en kan ook niet van buiten de klas worden bekeken
- Beschermd – Het is alleen toegankelijk als de accessor de afgeleide klasse is
- Openbaar - Het kan worden geopend of bekeken van buiten de klas
Voor meer informatie, zie Toegang tot modificaties
36. Kun je een programma compileren zonder de hoofdfunctie?
Ja, het is absoluut mogelijk om een programma te compileren zonder main(). Gebruik bijvoorbeeld macro's die het hoofdbestand definiëren
C++ // C++ program to demonstrate the // a program without main() #include #define fun main int fun(void) { printf('Geeksforgeeks'); return 0; }> Voor meer informatie, zie Kun je een programma compileren zonder de hoofdfunctie?
37. Wat is STL?
STL staat bekend als Standard Template Library, het is een bibliotheek die 4 componenten biedt, zoals containers, algoritmen en iterators.

C++ STL
Voor meer informatie, zie STL in C++
38. Definieer de inline-functie. Kunnen we een recursieve inline-functie hebben in C++?
Een inline-functie is een vorm van verzoek en geen bevel aan een compiler, wat resulteert in de inlineing van onze functie naar de hoofdtekst van de functie. Een inline-functie kan overhead worden als de uitvoeringstijd van de functie korter is dan de schakeltijd van de aanroepende functie naar de aangeroepen functie. Gebruik het trefwoord om een functie inline te maken in lijn before en definieer de functie voordat er oproepen naar de functie worden gedaan.

Uitleg van inline-functies
Syntaxis:
inline data_type function_name() { Body; }>Het antwoord is Nee; Het kan niet recursief zijn.
subtekenreeks in bash
Een inline-functie kan niet recursief zijn, omdat in het geval van een inline-functie de code alleen maar op de positie wordt geplaatst waar deze wordt aangeroepen en geen stukje informatie op de stapel bijhoudt dat nodig is voor recursie.
Bovendien, als u een inline trefwoord vóór een recursieve functie schrijft, zal de compiler dit automatisch negeren, omdat de inline door de compiler alleen als suggestie wordt opgevat.
Voor meer informatie, zie Inline-functie
39. Wat is een abstracte klasse en wanneer gebruik je deze?
Een abstracte klasse is een klasse die specifiek is ontworpen om als basisklasse te worden gebruikt. Een abstracte klasse bevat minimaal één puur virtuele functie. Je declareert een puur virtuele functie met behulp van a zuivere specificatie(= 0) in de declaratie van een virtuele lidfunctie in de klassendeclaratie
U kunt geen abstracte klasse gebruiken als parametertype, functieretourtype of het type van een expliciete conversie, en u kunt ook geen object van een abstracte klasse declareren. Het kan echter worden gebruikt om pointers en verwijzingen naar een abstracte klasse te declareren.
Een abstracte klasse wordt gebruikt als u een gemeenschappelijke, geïmplementeerde functionaliteit wilt bieden aan alle implementaties van de component. Met abstracte klassen kunt u uw klasse gedeeltelijk implementeren, terwijl interfaces voor geen enkele leden een implementatie zouden hebben. In eenvoudige bewoordingen: abstracte klassen zijn een goede oplossing als u implementatiedetails aan uw kinderen wilt verstrekken, maar niet wilt dat een exemplaar van uw klasse rechtstreeks wordt geïnstantieerd.
40. Wat zijn de statische gegevensleden en statische lidfuncties?
Het statische gegevenslid van een klasse is een normaal gegevenslid, maar wordt voorafgegaan door een statisch trefwoord. Het wordt uitgevoerd vóór main() in een programma en wordt geïnitialiseerd op 0 wanneer het eerste object van de klasse wordt gemaakt. Het is alleen zichtbaar voor een gedefinieerde klasse, maar de reikwijdte ervan is voor het hele leven.
Syntaxis:
static Data_Type Data_Member;>
De statische lidfunctie is de lidfunctie die wordt gebruikt om toegang te krijgen tot andere statische gegevensleden of andere statische lidfuncties. Het wordt ook gedefinieerd met een statisch trefwoord. We hebben toegang tot de statische lidfunctie met behulp van de klassenaam of klasseobjecten.
bedrijf versus bedrijf
Syntaxis:
classname::function name(parameter);>
C++ sollicitatievragen – expertniveau
41. Wat is het belangrijkste gebruik van het trefwoord Volatile?
Net als de naam kunnen dingen plotseling en onverwacht veranderen; Het wordt dus gebruikt om de compiler te informeren dat de waarde op elk moment kan veranderen. Bovendien verhindert het vluchtige trefwoord dat de compiler de code kan optimaliseren. Het was bedoeld om te worden gebruikt bij de interface met geheugen-toegewezen hardware, signaalbehandelaars en machinecode-instructie.
Raadpleeg dit voor meer informatie Vluchtig
42. Definieer de opslagklasse in C++ en noem er enkele
Opslagklasse wordt gebruikt om de kenmerken (levensduur en zichtbaarheid) van een variabele of functie te definiëren. Deze functies helpen meestal bij het traceren van het bestaan van een variabele tijdens de runtime van een programma.
Syntaxis:
storage_class var_data_type var_name;>
Enkele soorten opslagklassen:

Voorbeelden van opslagklasse
Voor meer informatie, zie Opslagklasse
43. Wat is een veranderlijke opslagklassespecificatie? Hoe kunnen ze worden gebruikt?
Net als zijn naam wordt de veranderlijke opslagklassespecificatie alleen gebruikt voor een klassegegevenslid om het wijzigbaar te maken, zelfs als het lid deel uitmaakt van een object dat als const is gedeclareerd. Statische of const- of referentieleden kunnen de veranderlijke specificatie niet gebruiken. Wanneer we een functie als const declareren, wordt deze pointer die naar de functie wordt doorgegeven, const.
44. Definieer de variabele Blokbereik.
Het bereik van een variabele is dus een gebied waar een variabele toegankelijk is. Er zijn twee bereikregio's: A globaal en blok of lokaal.
Een blokscopevariabele wordt ook wel een lokale scopevariabele genoemd. Een variabele die is gedefinieerd binnen een functie (zoals main) of binnen een blok (zoals loops en if-blokken) is een lokale variabele. Het kan ALLEEN worden gebruikt binnen die specifieke functie/blok waarin het is gedeclareerd. een blokgerichte variabele zal niet beschikbaar zijn buiten het blok, zelfs als het blok zich binnen een functie bevindt.
Voor meer informatie, zie Reikwijdte van een variabele
45. Wat is de functie van het zoekwoord Auto?
Het auto trefwoord kan worden gebruikt om op een eenvoudige manier een variabele met een complex type te declareren. U kunt auto gebruiken om een variabele te declareren als de initialisatiezin sjablonen, verwijzingen naar functies, verwijzingen naar leden, enz. bevat. Met de mogelijkheden voor type-inferentie kunnen we minder tijd besteden aan het opschrijven van dingen die de compiler al weet. Omdat alle typen alleen in de compilerfase worden afgeleid, neemt de compilatietijd iets toe, maar dit heeft geen invloed op de looptijd van het programma.
Voor meer informatie, zie Auto's in C++
46. Definieer naamruimte in C++.
Naamruimten stellen ons in staat benoemde items die anders een globaal bereik zouden hebben, in kleinere bereiken te organiseren, waardoor we ze een naamruimtebereik kunnen geven. Hierdoor kunnen programmaonderdelen worden georganiseerd in verschillende logische bereiken met namen. De naamruimte biedt een plaats waar identificatiegegevens, zoals variabelen, methoden en klassen, kunnen worden gedefinieerd of gedeclareerd.
Of we zouden kunnen zeggen dat een naamruimte een declaratieve zone is die de identifiers (namen van typen, functies, variabelen, enzovoort) daarin een bereik geeft. Naamruimten worden gebruikt om code in logische categorieën te ordenen en naamconflicten te voorkomen, wat kan gebeuren als uw codebasis veel bibliotheken bevat.
Voor meer informatie, zie Naamruimte in C++
47. Wanneer wordt het retourtype void() gebruikt?
Als het trefwoord void wordt gebruikt als functieretourtype, geeft dit aan dat de functie geen waarde retourneert. Bij gebruik als parameterlijst voor een functie geeft void aan dat de functie geen parameters accepteert. Niet-waarde-retournerende functies worden ook wel void-functies genoemd. Ze worden ongeldig genoemd omdat ze niet zijn ontworpen om iets terug te sturen. Klopt, maar slechts gedeeltelijk. We kunnen geen waarden retourneren van ongeldige functies, maar we kunnen zeker iets retourneren. Hoewel void-functies geen retourtype hebben, kunnen ze wel waarden retourneren.
Voor meer informatie, zie Type ongeldige retourzending .
48. Wat is het verschil tussen ondiepe kopie en diepe kopie?
Oppervlakkige kopie | Diepe kopie |
|---|---|
| Bij Shallow Copy wordt een kopie van het originele object opgeslagen en wordt uiteindelijk alleen het referentieadres gekopieerd. Simpel gezegd: ondiepe kopieën dupliceren zo min mogelijk | In Deep copy worden zowel de kopie van het originele object als de herhaalde kopieën opgeslagen. Simpel gezegd: Deep Copy dupliceert alles |
| Een oppervlakkige kopie van een collectie is een kopie van de collectiestructuur, niet van de elementen. Met een oppervlakkige kopie delen twee collecties nu individuele elementen. | Een diepe kopie van een collectie bestaat uit twee collecties waarbij alle elementen uit de originele collectie zijn gedupliceerd. |
| Een ondiepe kopie is sneller | Diep kopiëren is relatief langzamer. |
Voor meer informatie, zie Ondiepe kopie versus diepe kopie
49. Kunnen we een virtuele functie aanroepen vanuit een constructor?
Ja, we kunnen een virtuele functie aanroepen vanuit een constructor. Maar het kan een uitzondering voor overschrijving genereren.
50. Wat zijn ongeldige aanwijzingen?
Net als zijn naam is een void pointer een pointer die aan niets of aan welk gegevenstype dan ook is gekoppeld. Niettemin kan een void pointer de adreswaarde van elk type bevatten en kan deze van het ene gegevenstype naar het andere worden geconverteerd.
Voor meer informatie verwijst naar Ongeldige aanwijzer in C++
Bonusvraag:
Wat is ' dit ‘aanwijzer in C++?
dit pointer zorgt ervoor dat elk object toegang heeft tot zijn eigen adres via een essentiële pointer. Alle ledenfuncties nemen dit pointer als impliciet argument. dit wijzer kan worden gebruikt om te verwijzen naar het oproepende object binnen een lidfunctie.
- dit pointer wordt gebruikt om een object als parameter door te geven aan een andere methode.
- Elk object krijgt zijn eigen kopie van het gegevenslid.
- dit pointer wordt gebruikt om indexeerders te declareren.
Voor meer informatie, zie dit aanwijzer in C++