C++ – det måste kända och genom tiderna favorit programmeringsspråket för kodare. Den är fortfarande aktuell som den var i mitten av 80-talet. Som ett allmänt ändamål och objektorienterat programmeringsspråk används flitigt mestadels varje gång under kodning. Som ett resultat kräver vissa jobbroller att individer är flytande i C++. Det utnyttjas av topp IT-företag som t.ex Evernote, LinkedIn, Microsoft, Opera, NASA , och Meta på grund av dess pålitlighet, prestanda och många olika inställningar där den kan användas. Så för att komma in i dessa företag måste du vara noggrann i dessa topp 50 C++ intervjufrågor vilket kan få dig att framstå som en expert inför rekryterare.

För att göra dig redo för intervju har vi tagit med Topp 50 C++ intervjufrågor för nybörjare, medel och erfaren som du definitivt måste gå igenom för att få dig själv placerad på topp MNC.
C++ Intervjufrågor för nybörjare
1. Vad är C++? Vilka är fördelarna med C++?
C++ är ett objektorienterat programmeringsspråk som introducerades för att övervinna de jurisdiktioner där C saknades. Med objektorienterat menar vi att det fungerar med begreppet polymorfism , arv , abstraktion , inkapsling , objekt och klass .
Fördelar med C++ :
- C++ är ett OOPs-språk som betyder att data betraktas som objekt.
- C++ är ett språk med flera paradigm; Enkelt uttryckt betyder det att vi kan programmera programmets logik, struktur och procedur.
- Minneshantering är en nyckelfunktion i C++ eftersom den möjliggör dynamisk minnesallokering
- Det är ett mellannivå programmeringsspråk vilket innebär att det kan utveckla spel, stationära applikationer, drivrutiner och kärnor
För att läsa mer, se artikeln – Vilka är fördelarna med C++?
2. Vilka olika datatyper finns i C++?

Olika typer av datatyper i C++
För mer information, se ' std' är också känd som Standard eller kan tolkas som ett namnområde. Kommandot använder namnutrymme std informerar kompilatorn att lägga till allt under std namnutrymme och inskärpa dem i globalt namnutrymme . Denna all inskränkning av globala namnrymden gynnar oss att använda cout och äter utan att använda std::_operator_.
För mer information, se namnutrymme och std .
4. Vad är referenser i C++?
När en variabel beskrivs som en referens blir den ett alias för den redan existerande variabeln. Enkelt uttryckt är en refererad variabel en annan namngiven variabel av en befintlig variabel med tanke på att ändringar som görs i referensvariabeln kommer att återspeglas i den redan existerande variabeln. En referensvariabel föregås av a '&' symbol.
Syntax:
int GFG = 10; // reference variable int& ref = GFG;>
För mer information, se referenser i C++
5. Vad menar du med Call by Value och Call by Reference?
I detta programmeringsspråk för att anropa en funktion har vi 2 metoder: Ring efter värde och Ring genom referens
Ring efter värde | Ring via referens |
|---|---|
| En kopia av en variabel skickas. | En variabel själv passeras i grunden. |
| Anropa en funktion genom att skicka värdena genom att kopiera variabler. | Anropa en funktion genom att skicka adressen till den överförda variabeln. |
| De ändringar som görs i funktionen reflekteras aldrig utanför funktionen på variabeln. Kort sagt, det ursprungliga värdet ändras aldrig i Call by Value. | De ändringar som gjorts i funktionerna kan ses utanför funktionen på den godkända funktionen. Kort sagt, det ursprungliga värdet ändras i Call genom referens. |
| Godkända faktiska och formella parametrar lagras på olika minnesplatser. Att göra Call by Value till lite minne är därför otillräckligt | Passerade faktiska och formella parametrar lagras på samma minnesplats. Därför gör Call by Reference lite mer minneseffektivt. |
För information, se skillnaden mellan call by value och call by reference
6. Definiera token i C++
En token är det minsta individuella elementet i ett program som förstås av en kompilator. En token består av följande:
- Nyckelord – Det har en speciell betydelse för kompilatorn
- Identifierare – Som har ett unikt värde/identitet
- Konstanter – Det förändrar aldrig deras värde under hela programmet
- Strängar – Det innehåller den homogena sekvensen av data
- Specialsymboler – De har någon speciell betydelse och kan inte användas för annat ändamål; t.ex: [] () {}, ; * = #
- Operatörer – Vem utför operationer på operanden
För mer information, se Tokens i C++
7. Vad är skillnaden mellan C och C++?
C | C++ |
|---|---|
| Det är ett processuellt programmeringsspråk. Med enkla ord, det stöder inte klasser och objekt | Det är en blandning av både processuella och objektorienterade programmeringsspråk. Med enkla ord stöder den klasser och objekt. |
| Det stöder inte några OOPs-koncept som polymorfism, dataabstraktion, inkapsling, klasser och objekt. | Den stöder alla begrepp av data |
| Den stöder inte funktion och operatörsöverbelastning | Den stöder funktions- och operatörsöverbelastning respektive |
| Det är ett funktionsdrivet språk | Det är ett objektdrivet språk |
För mer information, se Skillnaden mellan C och C++
8. Vad är skillnaden mellan struktur och klass?
Struktur | Klass |
|---|---|
| Medlemmar av strukturen är alltid som standard offentligt läge | Medlemmar i klassen kan vara i privata, skyddade och offentliga lägen. |
| Strukturer är av värdetyp. De har bara värde i minnet. | Klasserna är av referenstyp. Den innehåller en referens till ett objekt i minnet. |
| Minnet i strukturer lagras som stackar | Minnet i klasser lagras som högar. |
För mer information, se Skillnaden mellan struktur och klass.
9. Vad är skillnaden mellan referens och pekare?
Referens rund matematik java | Pekare |
|---|---|
| Värdet på en referens kan inte tilldelas om | Värdet på en pekare kan tilldelas om |
| Det kan aldrig hålla en null värde eftersom det behöver ett befintligt värde för att bli ett alias för | Den kan hålla eller peka på en null värde och betecknas som en nullptr eller nollpekare |
| Det kan inte fungera med arrayer | Det kan fungera med arrayer |
| För att komma åt medlemmarna i klassen/struct använder den en ' . ' | För att komma åt medlemmarna i klassen/struct använder den en ' -> ' |
| Minnesplatsen för referensen kan lätt nås eller den kan användas direkt | Minnesplatsen för en pekare kan inte nås lätt eftersom vi måste använda en dereference ' * ' |
För mer information, se Skillnad mellan referens och pekare
10. Vad är skillnaden mellan funktionsöverbelastning och operatörsöverbelastning?
Funktion Överbelastning | Operatör överbelastning |
|---|---|
| Det är i grund och botten att definiera en funktion på många sätt, så att det finns många sätt att kalla den eller i enkla termer har du flera versioner av samma funktion | Det är i grunden att ge övning i att ge en speciell innebörd till den befintliga betydelsen av en operatör eller i enkla termer att omdefiniera den fördefinierade betydelsen |
| Parameteriserade funktioner är ett bra exempel på funktionsöverbelastning, eftersom du bara ändrar argumentet eller parametern för en funktion gör den användbar för olika ändamål | Polymorfism är ett bra exempel på en operatörsöverbelastning eftersom ett objekt för allokering klass kan användas och anropas av olika klasser för olika ändamål |
Exempel på funktionsöverbelastning:
| Exempel på operatörsöverbelastning:
|
För mer information, se Operatör överbelastning och Funktion Överbelastning
11. Vad är skillnaden mellan en array och en lista?
Matriser | Listor |
|---|---|
| Array är sammanhängande minnesplatser av homogena datatyper lagrade på en fast plats eller storlek. | Listor är klassiska individuella element som är länkade eller kopplade till varandra med hjälp av pekare och inte har en fast storlek. |
| Arrayer är statiska till sin natur. | Listor är dynamiska till sin natur |
| Använder mindre minne än länkade listor. | Använder mer minne eftersom det måste lagra värdet och pekarminnesplatsen |
För mer information, se Arrays kontra lista
12. Vad är skillnaden mellan en while loop och en do-while loop?
Medan Loop | gör-under loop |
|---|---|
| While-slingan kallas också för en ingångskontrollerad slinga | Gör-under-slingan kallas för en utgångskontrollslinga |
| Om villkoret inte är uppfyllt kommer satserna i slingan inte att köras | Även om villkoret inte är uppfyllt kommer satserna i slingan att köras minst en gång |
Exempel of a while loop: while (villkor) {påståenden som ska köras;}; | Exempel av en do-while loop: gör { uttalanden som ska utföras; escape karaktär java } while(villkor eller uttryck); |
För mer information, se Skillnaden mellan while och do-while loop
13. Diskutera skillnaden mellan prefix och postfix?
prefix | postfix |
|---|---|
| Det innebär helt enkelt att sätta operatören före operanden | Det innebär helt enkelt att sätta operatören efter operanden |
| Den utför sig själv innan '; ' | Den kör sig själv efter '; ' |
| Associativitet för prefix ++ är höger till vänster | Associativiteten för postfix ++ är från vänster till höger |
För mer information, se Skillnaden mellan prefix och postfix
14. Vad är skillnaden mellan new och malloc()?
ny | malloc() |
|---|---|
| new är en operatör som utför en operation | malloc är en funktion som returnerar och accepterar värden |
| nya kallar konstruktörerna | malloc kan inte anropa en konstruktor |
| new är snabbare än malloc eftersom det är en operatör | malloc är långsammare än ny eftersom det är en funktion |
| ny returnerar den exakta datatypen | malloc returnerar ogiltig* |
För mer information, se Skillnaden mellan new och malloc()
15. Vad är skillnaden mellan virtuella funktioner och rena virtuella funktioner?
Virtuell funktion | Ren virtuell funktion |
|---|---|
| En virtuell funktion är en medlemsfunktion i en basklass som kan omdefinieras i en annan härledd klass. | En ren virtuell funktion är en medlemsfunktion i en basklass som endast deklareras i en basklass och definieras i en härledd klass för att förhindra att den blir en abstrakt klass. |
| En virtuell funktion har sin definition i sin respektive basklass. | Det finns ingen definition i Pure Virtual Function och initieras med en ren specificator (= 0). |
| Basklassen har en virtuell funktion som kan representeras eller instanseras; Med enkla ord kan dess objekt göras. | En basklass med ren virtuell funktion blir abstrakt som inte kan representeras eller instanseras; Med enkla ord betyder det att dess föremål inte kan göras. |
För mer information, se Skillnad mellan virtuella funktioner och rena virtuella funktioner
16. Vad är klasser och objekt i C++?
En klass är en användardefinierad datatyp där alla medlemsfunktioner och datamedlemmar är skräddarsydda efter krav och krav samt att dessa alla kan nås med hjälp av en objekt . För att deklarera en användardefinierad datatyp använder vi ett nyckelord klass.
Ett objekt är en instans av en klass och en entitet med värde och tillstånd; Enkelt uttryckt används det som en katalysator eller för att representera en klassmedlem. Den kan innehålla olika parametrar eller inga.
Notera: En klass är en ritning som definierar funktioner som används av ett objekt.
För mer information, se detta Vad är klasser och objekt
17. Vad är funktionsöverstyrning?
När en funktion med samma namn, samma argument eller parametrar och samma returtyp som redan finns/deklareras i basklassen används i en härledd klass kallas Function Overriding. Det är ett exempel på Runtime Polymorphism eller Late Binding vilket innebär att den åsidosatta funktionen kommer att exekveras vid körningstiden för exekveringen.
För mer information, se Funktionsöverstyrning i C++
18. Vilka är de olika OOPs-koncepten i C++?
- Klasser : Det är en användardefinierad datatyp
- Föremål : Det är en instans av en klass
- Abstraktion: Det är en teknik för att endast visa nödvändiga detaljer
- Inkapsling: Inslagning av data i en enda enhet
- Arv: En klasss förmåga att härleda egenskaper och egenskaper från en annan klass
- Polymorfism: Polymorfism är känd som många former av samma sak
För mer information, se Olika OOPs-koncept i C++
19. Förklara arv
Förmågan eller förmågan hos en klass att härleda egenskaper och egenskaper från en annan klass kallas arv. Enkelt uttryckt är det ett system eller en teknik för att återanvända och utöka befintliga klasser utan att modifiera dem.
För mer information, se Arv
20. När ska vi använda multipelarv?
Flera arv innebär att en härledd klass kan ärva två eller flera bas-/förälderklasser. Det är användbart när en härledd klass behöver kombinera många attribut/kontrakt och ärva en del, eller hela, implementeringen från dessa attribut/kontrakt. För att ta ett exempel från verkligheten, överväg dina föräldrar där förälder A är din PAPPA. Förälder B är din MAMMA och Chid C är du.

Flera arv
För mer information, se Multipelt arv .
21. Vad är virtuellt arv?
Virtuellt arv är en teknik som säkerställer att endast en kopia av en basklasss medlemsvariabler ärvs av klasser som härrör från barnbarn. Eller enkelt uttryckt, virtuellt arv används när vi har att göra med en situation med flera arv men vill förhindra att flera instanser av samma klass dyker upp i arvshierarkin.
22. Vad är polymorfism i C++?
Polymorfism är känd som många former av samma sak. Enkelt uttryckt kan vi säga att polymorfism är förmågan att visa en medlemsfunktion i flera former beroende på vilken typ av objekt som anropar dem.
Med andra ord kan vi också säga att en man kan vara anställd för någon, son till någon, far till någon och man till någon; så här kan polymorfism projiceras i verkligheten.
Det finns två typer av polymorfism:
- Kompilera tidspolymorfism
- Funktion Överbelastning
- Operatör överbelastning
- Run Time Polymorphism
- Funktion Åsidosättande
- Virtuell funktion
För att veta mer om det, se Polymorfism
23. Vilka olika typer av polymorfism finns i C++?
Det finns 2 typer av polymorfism
Kompilera tidspolymorfism eller statisk bindning
Denna typ av polymorfism uppnås under kompileringstiden för programmet vilket resulterar i att det går lite snabbare än körtiden. Arv är inte heller inblandat i det. Den består av 2 ytterligare tekniker :
Funktionsöverbelastning: När det finns flera funktioner med samma namn men olika parametrar kallas detta funktionsöverbelastning.
C++ // same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>
Operatör överbelastning: Det är i grunden att ge övning i att ge en speciell innebörd till den befintliga betydelsen av en operatör eller i enkla termer att omdefiniera den fördefinierade betydelsen
java sträng trimC++
class GFG { // private and other modes statements public returnType operator symbol(arguments){ statements } statements };>
Run-Time Polymorphism eller Sen bindning
Körtidspolymorfism äger rum när funktioner anropas under körtid.
Funktionsöverstyrning: Funktionsöverstyrning inträffar när en basklassmedlemsfunktion omdefinieras i en härledd klass med samma argument och returtyp.
// 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; }> Produktion:
Function of derived class>
För mer information, se Olika typer av polymorfism
24. Jämför kompileringstidspolymorfism och Runtime-polymorfism
Kompileringstidspolymorfism | Runtime polymorfism |
|---|---|
| Det kallas också statisk bindning och tidig bindning. | Det kallas också Dynamisk bindning och Sen bindning. |
| Det är snabbt eftersom exekveringen är känd tidigt vid kompileringstillfället. | Det är långsamt jämfört med kompileringstid eftersom exekvering är känd under körning. |
| Det uppnås genom funktionsöverbelastning och operatörsöverbelastning. | Det uppnås genom virtuella funktioner och funktionsöverstyrning. |
För mer information, se Kompileringstidspolymorfism och Runtime-polymorfism
25. Förklara konstruktorn i C++.
En konstruktor är en speciell typ av medlemsfunktion i en klass, vars namn är detsamma som namnet på klassen av vilken den anropas och initierar värde till objektet i en klass.
Det finns 3 typer av konstruktörer:
A. Standardkonstruktör: Det är den mest grundläggande typen av konstruktör som inte accepterar några argument eller parametrar. Även om det inte kallas anropar kompilatorn det automatiskt när ett objekt skapas.
Exempel:
C++ class Class_name { public: Class_name() { cout << 'I am a default constructor'; } };>
B. Parameteriserad konstruktör: Det är en typ av konstruktör som accepterar argument eller parametrar. Det måste anropas explicit genom att skicka värden i argumenten eftersom dessa argument hjälper till att initiera ett objekt när det skapas. Den har också samma namn som klassens.
Det används också för att överbelasta konstruktörer.
Exempel:
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; }> Produktion
G.x = 10, G.y = 15>
C. Kopieringskonstruktör: En kopieringskonstruktor är en medlemsfunktion som initierar ett objekt med ett annat objekt av samma klass. Dessutom tar Copy-konstruktorn en referens till ett objekt av samma klass som ett argument.
Exempel:
C++ Sample(Sample& t) { id = t.id; }>
För mer information, se Konstruktörer
26. Vad är förstörare i C++?
Destruktörer är medlemmar av funktioner i en klass som tar bort ett objekt när ett objekt i klassen går utanför räckvidden. Destruktörer har samma namn som klassen som föregås av ett tilde (~) tecken. Destruktörer följer också en ner till toppen tillvägagångssätt, till skillnad från konstruktörer som följer en top-to-down.
Syntax:
~constructor_name(); // tilde sign signifies that it is a destructor>
För mer information, se Jagare .
27. Vad är en virtuell förstörare?
När instanser eller objekt av en härledd klass förstörs med ett basklasspekarobjekt anropas en virtuell destruktor för att frigöra minnesutrymme som tilldelats av det härledda klassobjektet eller instansen.
Virtual destructor garanterar att först den härledda klassens destructor anropas. Sedan anropas basklassens destruktör för att frigöra utrymmet som upptas av båda destruktörerna i arvsklassen, vilket räddar oss från minnesläckan. Det rekommenderas att göra din destruktor virtuell när din klass är polymorf.
För mer information, se Virtual Destroyer
28. Är destruktor överbelastning möjlig? Om ja, förklara och om nej varför?
Det enkla svaret är NEJ vi kan inte överbelasta en förstörare. Det är obligatoriskt att endast destruktör per klass i C++. För att också nämna, Destructor tar varken argument eller de har en parameter som kan hjälpa till att överbelasta.
C++ Intervjufrågor – Mellannivå
29. Vilka operationer är tillåtna på pekare?
Pekare är de variabler som används för att lagra adressplatsen för en annan variabel. Operationer som är tillåtna för en pekare är:
- Öka/minska en pekare
- Addition och subtraktion av heltal till en pekare
- Jämförelse av pekare av samma typ
30. Vad är syftet med radera operatör?
Delete-operatorn används för att ta bort/ta bort alla egenskaper/egenskaper från ett objekt genom att avallokera dess minne; dessutom returnerar det sant eller falskt i slutändan. Enkelt uttryckt förstör eller avallokerar det array- och icke-array(pointer)-objekt som skapas av nya uttryck.
C++ int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>
För mer information, se Ta bort operatör
31. Hur skiljer sig radera [] från radera?
radera[] | radera |
|---|---|
| Den används för att ta bort en hel array | Den används för att ta bort endast en enda pekare |
| Den används för att ta bort objekten i ny[]; Med detta kan vi säga det radera[] används för att ta bort en rad objekt | Den används för att ta bort objekten i ny; Med detta kan vi säga det radera används för att ta bort ett enstaka objekt |
| Den kan kalla hur många destruktörer den vill | Den kan bara ringa förstöraren av en klass en gång |
32. Vad kan du om kompisklass och kompisfunktion?
En vänklass är en klass som kan komma åt både de skyddade och privata variablerna för klasserna där den deklareras som en vän.
Exempel på kompisklass:
C++ class Class_1st { // ClassB is a friend class of ClassA friend class Class_2nd; statements; } class Class_2nd { statements; }>
En vänfunktion är en funktion som används för att komma åt privata, skyddade och offentliga datamedlemmar eller medlemsfunktioner i andra klasser. Det deklareras med ett vännyckelord. Fördelen med en vänfunktion är att den inte är bunden till klassens omfattning och när den väl har deklarerats i en klass, dessutom kan den inte anropas av ett objekt i klassen; därför kan den anropas av andra funktioner. Med tanke på alla de nämnda punkterna kan vi säga att en vänfunktion är en global funktion .
Exempel på vänfunktion:
C++ class GFG { statements; friend dataype function_Name(arguments); statements; } OR class GFG { statements' friend int divide(10, 5); statements; }>
För mer information, se kompisfunktion och kompisklass
33. Vad är ett spillfel?
Overflow-fel uppstår när antalet är för stort för datatypen att hantera. Enkelt uttryckt är det en typ av fel som är giltig för det definierade men som överskrider det definierade intervallet där det ska sammanfalla/ligga.
Till exempel är intervallet för int-datatypen –2 147 483 648 till 2,147,483,647 och om vi deklarerar en storleksvariabel 2,247,483,648 det kommer att generera ett spillfel.
34. Vad gör operatören för Scope Resolution?
En scope resolution operator betecknas med en ' :: ’ symbol. Precis som sitt namn löser denna operatör räckviddsbarriären i ett program. En omfattningsupplösningsoperator används för att referera till en medlemsfunktion eller en global variabel utanför deras omfattning, till vilken den också kan komma åt den dolda variabeln eller funktionen i ett program.
Scope Resolution används för många mängder uppgifter:
- För att komma åt en global variabel när det finns en lokal variabel med samma namn
- För att definiera funktionen utanför klassen
- Vid flera arv
- För namnutrymme
För mer information, se Operatör för omfattningsupplösning
35. Vilka är C++-åtkomstmodifierarna?
Åtkomstbegränsningen som specificeras för klassmedlemmarna (oavsett om det är medlemsfunktion eller datamedlem) är känd som åtkomstmodifierare/specificerare.
Åtkomstmodifierare är av tre typer:
- Privat – Den kan varken nås eller ses utanför klassen
- Skyddad - Den kan nås om och endast om accessorn är den härledda klassen
- Offentlig - Den kan nås eller ses utanför klassen
För mer information, se Åtkomstmodifierare
36. Kan du kompilera ett program utan huvudfunktionen?
Ja, det är absolut möjligt att kompilera ett program utan en main(). Använd till exempel makron som definierar huvudet
C++ // C++ program to demonstrate the // a program without main() #include #define fun main int fun(void) { printf('Geeksforgeeks'); return 0; }> För mer information, se Kan du kompilera ett program utan huvudfunktionen
37. Vad är STL?
STL är känt som Standard Template Library, det är ett bibliotek som tillhandahåller 4 komponenter som behållare, algoritmer och iteratorer.

C++ STL
För mer information, se STL i C++
konvertera int till sträng java
38. Definiera inline-funktion. Kan vi ha en rekursiv inline-funktion i C++?
En inline-funktion är en form av begäran inte en order till en kompilator som resulterar i att vår funktion infogas i huvudfunktionskroppen. En inline-funktion kan bli overhead om exekveringstiden för funktionen är mindre än växlingstiden från den anropande funktionen till den anropade funktionen. För att göra en funktion inline använd nyckelordet i kö före och definiera funktionen innan några anrop görs till funktionen.

Inline funktionsförklaring
Syntax:
inline data_type function_name() { Body; }>Svaret är Nej; Det kan inte vara rekursivt.
En inline-funktion kan inte vara rekursiv eftersom koden i fallet med en inline-funktion bara placeras i den position varifrån den anropas och inte upprätthåller en bit information på stacken som är nödvändig för rekursion.
Plus, om du skriver ett inline-nyckelord framför en rekursiv funktion, kommer kompilatorn automatiskt att ignorera det eftersom det inline bara tas som ett förslag av kompilatorn.
För mer information, se Inline funktion
39. Vad är en abstrakt klass och när använder du den?
En abstrakt klass är en klass som är speciellt utformad för att användas som en basklass. En abstrakt klass innehåller minst en ren virtuell funktion. Du deklarerar en ren virtuell funktion genom att använda en ren specificator(= 0) i deklarationen av en virtuell medlemsfunktion i klassdeklarationen
Du kan inte använda en abstrakt klass som en parametertyp, en funktionsreturtyp eller typen av en explicit konvertering, och du kan inte heller deklarera ett objekt av en abstrakt klass. Den kan dock användas för att deklarera pekare och referenser till en abstrakt klass.
En abstrakt klass används om du vill tillhandahålla en gemensam, implementerad funktionalitet bland alla implementeringar av komponenten. Abstrakta klasser tillåter dig att delvis implementera din klass, medan gränssnitt inte skulle ha någon implementering för några som helst medlemmar. Med enkla ord, abstrakta klasser passar bra om du vill ge implementeringsdetaljer till dina barn men inte vill tillåta att en instans av din klass instansieras direkt.
40. Vilka är statiska datamedlemmar och statiska medlemsfunktioner?
Den statiska datamedlemmen i en klass är en normal datamedlem men föregås av ett statiskt nyckelord. Den körs före main() i ett program och initieras till 0 när det första objektet i klassen skapas. Det är bara synligt för en definierad klass men dess omfattning är för livet.
Syntax:
static Data_Type Data_Member;>
Den statiska medlemsfunktionen är den medlemsfunktion som används för att komma åt andra statiska datamedlemmar eller andra statiska medlemsfunktioner. Det definieras också med ett statiskt nyckelord. Vi kan komma åt den statiska medlemsfunktionen med hjälp av klassnamnet eller klassobjekten.
Syntax:
classname::function name(parameter);>
C++ Intervjufrågor – Expertnivå
41. Vad är den huvudsakliga användningen av sökordet Volatile?
Precis som dess namn kan saker och ting förändras plötsligt och oväntat; Så det används för att informera kompilatorn att värdet kan ändras när som helst. Dessutom hindrar det flyktiga nyckelordet kompilatorn från att utföra optimering av koden. Den var avsedd att användas vid gränssnitt med minnesmappad hårdvara, signalhanterare och maskinkodsinstruktioner.
För mer information, se detta Flyktig
42. Definiera lagringsklass i C++ och nämn några
Lagringsklass används för att definiera funktionerna (livstid och synlighet) för en variabel eller funktion. Dessa funktioner hjälper vanligtvis till att spåra förekomsten av en variabel under ett programs körning.
Syntax:
storage_class var_data_type var_name;>
Vissa typer av lagringsklasser:

Exempel på förvaringsklass
För mer information, se Förvaringsklass
alfabetet av siffror
43. Vad är en föränderlig lagringsklassspecifikator? Hur kan de användas?
Precis som dess namn, används den föränderliga lagringsklassspecifikatorn endast på en klassdatamedlem för att göra den modifierbar även om medlemmen är en del av ett objekt som deklarerats som const. Statisk eller const, eller referensmedlemmar kan inte använda den föränderliga specifikationen. När vi deklarerar en funktion som const, blir denna pekare som skickas till funktionen const.
44. Definiera variabeln Block scope.
Så omfattningen av en variabel är en region där en variabel är tillgänglig. Det finns två omfattningsregioner, A global och block eller lokal.
En blockomfångsvariabel är också känd som en lokal omfångsvariabel. En variabel som är definierad inuti en funktion (som huvud) eller inuti ett block (som loopar och if-block) är en lokal variabel. Den kan ENDAST användas inom den specifika funktionen/blocket där den är deklarerad. en variabel med blockomfattning kommer inte att vara tillgänglig utanför blocket även om blocket är inuti en funktion.
För mer information, se Omfattning av en variabel
45. Vilken funktion har nyckelordet Auto?
Nyckelordet auto kan användas för att deklarera en variabel med en komplex typ på ett enkelt sätt. Du kan använda auto för att deklarera en variabel om initialiseringsfrasen innehåller mallar, pekare till funktioner, referenser till medlemmar, etc. Med typinferensfunktioner kan vi spendera mindre tid på att behöva skriva ut saker som kompilatorn redan kan. Eftersom alla typer härleds endast i kompileringsfasen, ökar tiden för kompilering något men det påverkar inte programmets körtid.
För mer information, se Bilar i C++
46. Definiera namnutrymme i C++.
Namnutrymmen gör det möjligt för oss att organisera namngivna objekt som annars skulle ha global räckvidd i mindre scope, vilket gör att vi kan ge dem namnrymden. Detta gör att programdelar kan organiseras i distinkta logiska omfång med namn. Namnutrymmet tillhandahåller en plats för att definiera eller deklarera identifierare som variabler, metoder och klasser.
Eller så kan vi säga att ett namnområde är en deklarativ zon som ger identifierarna (namn på typer, funktioner, variabler och så vidare) inom den ett omfång. Namnutrymmen används för att ordna kod i logiska kategorier och för att undvika namnkrockar, vilket kan inträffa när du har många bibliotek i din kodbas.
För mer information, se Namnutrymme i C++
47. När används returtypen void()?
Nyckelordet void, när det används som funktionsreturtyp, indikerar att funktionen inte returnerar ett värde. När den används som en parameterlista för en funktion, indikerar void att funktionen inte tar några parametrar. Funktioner som inte returnerar värde är också kända som void-funktioner. De kallas ogiltiga eftersom de inte är designade för att returnera något. Sant, men bara delvis. Vi kan inte returnera värden från tomma funktioner, men vi kan säkert returnera något. Även om void-funktioner inte har någon returtyp, kan de returnera värden.
För mer information, se Ogiltig returtyp .
48. Vad är skillnaden mellan ytlig kopia och djup kopia?
Grund kopia | Deep Copy |
|---|---|
| I Shallow copy lagras en kopia av originalobjektet och endast referensadressen kopieras slutligen. Enkelt uttryckt, Shallow copy dubbletter så lite som möjligt | I Deep copy lagras både kopian av originalobjektet och de upprepade kopiorna. Enkelt uttryckt, Deep copy duplicerar allt |
| En ytlig kopia av en samling är en kopia av samlingsstrukturen, inte elementen. Med en ytlig kopia delar två samlingar nu individuella element. | En djup kopia av en samling är två samlingar med alla element i originalsamlingen duplicerade. |
| En grund kopia är snabbare | Djupkopiering är jämförelsevis långsammare. |
För mer information, se Grund kopia VS Deep Copy
49. Kan vi anropa en virtuell funktion från en konstruktor?
Ja, vi kan anropa en virtuell funktion från en konstruktor. Men det kan kasta ett undantag för åsidosättande.
50. Vad är void-pekare?
Precis som sitt namn är en void-pekare en pekare som inte är associerad med någonting eller med någon datatyp. Ändå kan en void-pekare hålla adressvärdet av vilken typ som helst och kan konverteras från en datatyp till en annan.
För mer hänvisar information till Void Pointer i C++
Bonusfråga:
Vad är ' detta 'pekare i C++?
detta pointer gör det möjligt för varje objekt att få tillgång till sin egen adress genom en viktig pekare. Alla medlemsfunktioner tar detta pekaren som ett implicit argument. detta pekare kan användas för att referera till det anropande objektet inom en medlemsfunktion.
- detta pekaren används för att skicka ett objekt som en parameter till en annan metod.
- Varje objekt får sin egen kopia av datamedlemmen.
- detta pekare används för att deklarera indexerare.
För mer information, se detta pekare i C++