logo

Preguntes i respostes de l'entrevista C++ (2024)

C++ – el llenguatge de programació imprescindible i favorit de tots els temps dels programadors. Encara és rellevant tal com era a mitjans dels anys 80. Com a llenguatge de programació de propòsit general i orientat a objectes, s'utilitza àmpliament sobretot cada vegada durant la codificació. Com a resultat, algunes funcions laborals exigeixen que les persones tinguin fluïdesa en C++. És utilitzat per les principals empreses de TI com ara Evernote, LinkedIn, Microsoft, Opera, NASA , i Meta a causa de la seva fiabilitat, rendiment i àmplia gamma de configuracions en què es pot utilitzar. Per tant, per entrar en aquestes empreses, cal ser exhaustiu en aquestes 50 preguntes principals d'entrevista C++ que et pot fer semblar un expert davant dels reclutadors.

Les 50 millors preguntes d'entrevista de C++ per a novells i experimentats (2022)

Per preparar-vos per a l'entrevista, us hem portat el Les 50 preguntes principals d'entrevistes de C++ per a principiant, intermedi i experimentat que definitivament heu de passar per situar-vos a les principals multinacionals.

Preguntes de l'entrevista de C++ per a persones de nova edat

1. Què és C++? Quins són els avantatges de C++?

C++ és un llenguatge de programació orientat a objectes que es va introduir per superar les jurisdiccions on mancava C. Per orientat a objectes entenem que funciona amb el concepte de polimorfisme , herència , abstracció , encapsulació , objecte i classe .



Avantatges de C++ :

  1. C++ és un llenguatge OOP que significa que les dades es consideren objectes.
  2. C++ és un llenguatge multi-paradigma; En termes senzills, vol dir que podem programar la lògica, l'estructura i el procediment del programa.
  3. La gestió de memòria és una característica clau en C++, ja que permet l'assignació de memòria dinàmica
  4. És un llenguatge de programació de nivell mitjà que significa que pot desenvolupar jocs, aplicacions d'escriptori, controladors i nuclis.

Per llegir més, consulta l'article - Quins són els avantatges de C++?

2. Quins són els diferents tipus de dades presents en C++?

tipus de dades en C++

Diferents tipus de tipus de dades en C++

Per a més informació, consulteu std' també es coneix com a estàndard o es pot interpretar com un espai de noms. La comanda utilitzant l'espai de noms std informa al compilador que afegeix tot el que hi ha sota el espai de noms std i inculcar-los en el espai de noms global . Tota aquesta inculcació de l'espai de noms global ens beneficia d'utilitzar cout i menjant sense utilitzar std::_operador_.

Per a més informació, consulteu espai de noms i std .

4. Què són les referències en C++?

Quan una variable es descriu com a referència, es converteix en un àlies de la variable ja existent. En termes senzills, una variable de referència és una altra variable anomenada d'una variable existent tenint en compte que els canvis fets a la variable de referència es reflectiran en la variable ja existent. Una variable de referència va precedida d'a ‘&’ símbol.

Sintaxi:

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

Per a més informació, consulteu referències en C++

5. Què entens per Call by Value i Call by Reference?

En aquest llenguatge de programació per cridar una funció tenim 2 mètodes: Truca per valor i Trucada per referència

Truca per valor

Trucada per referència

Es passa una còpia d'una variable.Una variable en si es passa fonamentalment.
Cridar una funció enviant els valors copiant variables.Crida a una funció enviant l'adreça de la variable passada.
Els canvis fets a la funció mai es reflecteixen fora de la funció a la variable. En resum, el valor original mai s'altera a Call by Value.Els canvis fets a les funcions es poden veure fora de la funció a la funció passada. En resum, el valor original s'altera a la trucada per referència.
Els paràmetres reals i formals passats s'emmagatzemen en diferents ubicacions de memòria. Per tant, fent que Call by Value sigui una mica de memòria insuficientEls paràmetres reals i formals passats s'emmagatzemen a la mateixa ubicació de memòria. Per tant, fent que Call by Reference sigui una mica més eficient de memòria.

Per obtenir informació, consulteu la diferència entre trucada per valor i trucada per referència

6. Definiu el testimoni en C++

Un testimoni és l'element individual més petit d'un programa que un compilador entén. Un testimoni inclou el següent:

  1. Paraules clau – Que contenen un significat especial per al compilador
  2. Identificadors – Que tinguin un valor/identitat únic
  3. Constants – Que mai canvien el seu valor al llarg del programa
  4. Cordes – Que conté la seqüència homogènia de dades
  5. Símbols especials – Tenen un significat especial i no es poden utilitzar per a un altre propòsit; per exemple: [] () {}, ; * = #
  6. Operadors – Qui realitza operacions sobre l'operand

Per a més informació, consulteu Tokens en C++

7. Quina diferència hi ha entre C i C++?

C

C++

És un llenguatge de programació procedimental. En paraules simples, no admet classes ni objectesÉs una barreja de llenguatges de programació procedimentals i orientats a objectes. En paraules senzilles, admet classes i objectes.
No admet cap concepte de POO com el polimorfisme, l'abstracció de dades, l'encapsulació, les classes i els objectes.Admet tots els conceptes de dades
No admet la sobrecàrrega de funcions i d'operadorsAdmet la sobrecàrrega de funcions i d'operadors respectivament
És un llenguatge basat en funcionsÉs un llenguatge dirigit per objectes

Per a més informació, consulteu Diferència entre C i C++

8. Quina diferència hi ha entre struct i class?

Estructura

Classe

Els membres de l'estructura sempre són en mode públic per defecteEls membres de la classe poden estar en mode privat, protegit i públic.
Les estructures són del tipus valor. Només tenen valor a la memòria.Les classes són de tipus de referència. Conté una referència d'un objecte a la memòria.
La memòria de les estructures s'emmagatzema com a pilesLa memòria a les classes s'emmagatzema com a munts.

Per a més informació, consulteu el Diferència entre struct i classe.

9. Quina diferència hi ha entre referència i punter?

Referència

mapa iteratiu de java

Apuntador

El valor d'una referència no es pot reassignarEl valor d'un punter es pot reassignar
Mai pot aguantar a nul valor ja que necessita un valor existent per convertir-se en un àliesPot subjectar o apuntar a a nul valor i s'anomena a nullptr o punter nul
No pot funcionar amb matriusPot funcionar amb matrius
Per accedir als membres de class/struct utilitza un ' . Per accedir als membres de class/struct utilitza un ' ->
Es pot accedir fàcilment a la ubicació de memòria de referència o es pot utilitzar directamentNo es pot accedir fàcilment a la ubicació de memòria d'un punter, ja que hem d'utilitzar una desreferència ' *

Per a més informació, consulteu el Diferència entre referència i punter

10. Quina diferència hi ha entre la sobrecàrrega de funcions i la sobrecàrrega de l'operador?

Sobrecàrrega de funcions

Sobrecàrrega de l'operador

Bàsicament es defineix una funció de moltes maneres, de manera que hi ha moltes maneres d'anomenar-la o, en termes simples, teniu diverses versions de la mateixa funció.Bàsicament és donar pràctica de donar un significat especial al significat existent d'un operador o, en termes simples, redefinir el significat pre-redefinit.
Les funcions parametritzades són un bon exemple de sobrecàrrega de funcions, ja que només canviant l'argument o el paràmetre d'una funció la feu útil per a diferents propòsits.El polimorfisme és un bon exemple de sobrecàrrega d'operadors, ja que diferents classes poden utilitzar i cridar una classe d'objectes d'assignacions per a diferents propòsits.

Exemple de sobrecàrrega de funcions:

  1. int GFG(int X, int Y);
  2. int GFG(xar X, xar I);

Exemple de sobrecàrrega de l'operador:

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

Per a més informació, consulteu Sobrecàrrega de l'operador i Sobrecàrrega de funcions

11. Quina diferència hi ha entre una matriu i una llista?

Arrays

Llistes

Les matrius són ubicacions de memòria contigües de tipus de dades homogenis emmagatzemades en una ubicació o mida fixa.Les llistes són elements individuals clàssics que estan enllaçats o connectats entre si amb l'ajuda de punters i no tenen una mida fixa.
Les matrius són de naturalesa estàtica.Les llistes són de naturalesa dinàmica
Utilitza menys memòria que les llistes enllaçades.Utilitza més memòria ja que ha d'emmagatzemar el valor i la ubicació de la memòria del punter

Per a més informació, consulteu Arrays vs llista

12. Quina diferència hi ha entre un bucle while i un bucle do-while?

While Loop

bucle do-while

Mentre que el bucle també s'anomena bucle controlat per entradaEl bucle do-while s'anomena bucle de control de sortida
Si la condició no es compleix, les declaracions dins del bucle no s'executaranFins i tot si la condició no es compleix, les declaracions dins del bucle s'executaran almenys una vegada

Exemple bucle d'un while:

mentre (condició)

{instruccions a executar;};

Exemple d'un bucle do-while:

fer {

declaracions a executar;

} while(condició o expressió);

Per a més informació, consulteu el Diferència entre el bucle while i do-while

13. Discutiu la diferència entre prefix i postfix?

prefix

postfix

Simplement significa posar l'operador abans que l'operandSimplement significa posar l'operador després de l'operand
S'executa abans ‘; ‘ S'executa després ‘; ‘
L'associativitat del prefix ++ és de dreta a esquerraL'associativitat del postfix ++ és d'esquerra a dreta

Per a més informació, consulteu el Diferència entre prefix i postfix

14. Quina diferència hi ha entre new i malloc()?

nou

fonts per a gimp

malloc()

new és un operador que realitza una operaciómalloc és una funció que retorna i accepta valors
new crida als constructorsmalloc no pot cridar un constructor
new és més ràpid que malloc ja que és un operadormalloc és més lent que nou ja que és una funció
new retorna el tipus de dades exactemalloc torna nul*

Per a més informació, consulteu Diferència entre new i malloc()

15. Quina diferència hi ha entre les funcions virtuals i les funcions virtuals pures?

Funció virtual

Pura funció virtual

Una funció virtual és una funció membre d'una classe base que es pot redefinir en una altra classe derivada.Una funció virtual pura és una funció membre d'una classe base que només es declara en una classe base i es defineix en una classe derivada per evitar que es converteixi en una classe abstracta.
Una funció virtual té la seva definició a la seva classe base respectiva.No hi ha cap definició a Pure Virtual Function i s'inicialitza amb un especificador pur (= 0).
La classe base té una funció virtual que es pot representar o instància; En paraules simples, el seu objecte es pot fer.Una classe base que té una funció virtual pura esdevé abstracta que no es pot representar ni instància; En paraules senzilles, vol dir que el seu objecte no es pot fer.

Per a més informació, consulteu el Diferència entre funcions virtuals i funcions virtuals pures

16. Què són les classes i els objectes en C++?

Una classe és un tipus de dades definides per l'usuari on totes les funcions dels membres i els membres de dades estan fets a mida segons les demandes i requisits, a més dels quals es pot accedir a tots amb l'ajuda d'un objecte . Per declarar un tipus de dades definit per l'usuari fem servir una paraula clau classe.

Un objecte és una instància d'una classe i una entitat amb valor i estat; En termes simples, s'utilitza com a catalitzador o per representar un membre de la classe. Pot contenir paràmetres diferents o cap.

Nota: Una classe és un pla que defineix les funcions que utilitza un objecte.

Per a més informació, consulteu això Què són les classes i els objectes

17. Què és la substitució de funcions?

Quan una funció amb el mateix nom, els mateixos arguments o paràmetres i el mateix tipus de retorn ja present/declarat a la classe base s'utilitza en una classe derivada es coneix com a substitució de funcions. És un exemple de polimorfisme en temps d'execució o vinculació tardana, el que significa que la funció anul·lada s'executarà en el moment d'execució de l'execució.

Per a més informació, consulteu Anulació de funcions en C++

18. Quins són els diferents conceptes de POO en C++?

  • Classes : És un tipus de dades definit per l'usuari
  • Objectes : És una instància d'una classe
  • Abstracció: És una tècnica de mostrar només els detalls necessaris
  • Encapsulació: Embalatge de dades en una sola unitat
  • Herència: La capacitat d'una classe per derivar propietats i característiques d'una altra classe
  • Polimorfisme: El polimorfisme es coneix com moltes formes de la mateixa cosa

Per a més informació, consulteu Diversos conceptes de POO en C++

19. Explica l'herència

La capacitat o habilitat d'una classe per derivar propietats i característiques d'una altra classe es coneix com a herència. En termes senzills, és un sistema o tècnica de reutilització i ampliació de classes existents sense modificar-les.

Per a més informació, consulteu Herència

20. Quan hem d'utilitzar l'herència múltiple?

Les herències múltiples signifiquen que una classe derivada pot heretar dues o més classes base/parent. És útil quan una classe derivada necessita combinar nombrosos atributs/contractes i heretar part, o tota, de la implementació d'aquests atributs/contractes. Per prendre un exemple de la vida real, considereu els vostres pares on el pare A és el vostre PARE El pare B és la vostra mare i el nen C ets tu.

múltiples herències

Herències múltiples

Per a més informació, consulteu Herència múltiple .

21. Què és l'herència virtual?

L'herència virtual és una tècnica que garanteix que només una còpia de les variables membres d'una classe base sigui heretada per les classes derivades dels néts. O en termes senzills, l'herència virtual s'utilitza quan estem davant d'una situació d'herències múltiples però volem evitar que apareguin múltiples instàncies de la mateixa classe a la jerarquia d'herència.

22. Què és el polimorfisme en C++?

El polimorfisme es coneix com moltes formes de la mateixa cosa. En termes simples, podem dir que el polimorfisme és la capacitat de mostrar una funció membre en múltiples formes depenent del tipus d'objecte que l'anomena.

En altres paraules, també podem dir que un home pot ser un empleat d'algú, un fill d'algú, un pare d'algú i un marit d'algú; així és com es pot projectar el polimorfisme a la vida real.

Hi ha 2 tipus de polimorfisme:

  1. Compilar el polimorfisme temporal
    • Sobrecàrrega de funcions
    • Sobrecàrrega de l'operador
  2. Polimorfisme en temps d'execució
    • Anulació de funcions
    • Funció virtual

Per saber-ne més, consulteu Polimorfisme

23. Quins són els diferents tipus de polimorfisme en C++?

Hi ha 2 tipus de polimorfisme

Compilar el polimorfisme temporal o l'enllaç estàtic

Aquest tipus de polimorfisme s'aconsegueix durant el temps de compilació del programa, la qual cosa fa que sigui una mica més ràpid que el temps d'execució. A més, l'herència no hi intervé. Està format per 2 tècniques més :

Sobrecàrrega de funcions: Quan hi ha diverses funcions amb el mateix nom però amb paràmetres diferents, això es coneix com a sobrecàrrega de funcions.

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


Sobrecàrrega de l'operador: Bàsicament és donar pràctica de donar un significat especial al significat existent d'un operador o, en termes simples, redefinir el significat pre-redefinit.

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

Polimorfisme en temps d'execució o Enquadernació tardana

El polimorfisme en temps d'execució té lloc quan s'invoquen funcions durant el temps d'execució.

Anulació de funcions: La substitució de funcions es produeix quan una funció membre de classe base es redefinia en una classe derivada amb els mateixos arguments i tipus de retorn.

C++
// C++ program to demonstrate // Function overriding #include  using namespace std; class GFG { public:  virtual void display()  {  cout << 'Function of base class' << endl;  } }; class derived_GFG : public GFG { public:  void display()  {  cout << 'Function of derived class' << endl;  } }; int main() {  derived_GFG dg;  dg.display();  return 0; }>

Sortida:

Function of derived class>

Per a més informació, consulteu Diferents tipus de polimorfisme

24. Compara el polimorfisme en temps de compilació i el polimorfisme en temps d'execució

Polimorfisme en temps de compilació

sincronització de fils

Polimorfisme en temps d'execució

També s'anomena unió estàtica i unió precoç.També s'anomena Enquadernació dinàmica i Enquadernació tardana.
És ràpid perquè l'execució es coneix aviat en temps de compilació.És lent en comparació amb el temps de compilació perquè l'execució es coneix en temps d'execució.
S'aconsegueix mitjançant la sobrecàrrega de funcions i la sobrecàrrega de l'operador.S'aconsegueix mitjançant funcions virtuals i anul·lació de funcions.

Per a més informació, consulteu Polimorfisme en temps de compilació i polimorfisme en temps d'execució

25. Explica el constructor en C++.

Un constructor és un tipus especial de funció membre d'una classe, el nom de la qual és el mateix que el de la classe per la qual és invocat i inicialitza el valor a l'objecte d'una classe.

Hi ha 3 tipus de constructors:

A. Constructor per defecte: És el tipus de constructor més bàsic que no accepta arguments ni paràmetres. Encara que no es digui, el compilador l'anomena automàticament quan es crea un objecte.

Exemple:

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


B. Constructor parametritzat: És un tipus de constructor que accepta arguments o paràmetres. S'ha de cridar explícitament passant valors als arguments, ja que aquests arguments ajuden a inicialitzar un objecte quan es crea. També té el mateix nom que el de la classe.

A més, s'utilitza per sobrecarregar els constructors.

Exemple:

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

Sortida

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

C. Constructor de còpies: Un constructor de còpia és una funció membre que inicialitza un objecte utilitzant un altre objecte de la mateixa classe. A més, el constructor Copy pren una referència a un objecte de la mateixa classe com a argument.

Exemple:

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


Per a més informació, consulteu Constructors

26. Què són els destructors en C++?

Els destructors són membres de funcions d'una classe que suprimeixen un objecte quan un objecte de la classe surt de l'abast. Els destructors tenen el mateix nom que la classe precedit d'un signe de til (~). A més, els destructors segueixen a de dalt a baix enfocament, a diferència dels constructors que segueixen un enfocament de dalt a baix.

Sintaxi:

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

Per a més informació, consulteu Destructor .

27. Què és un destructor virtual?

Quan es destrueixen instàncies o objectes d'una classe derivada utilitzant un objecte punter de classe base, s'invoca un destructor virtual per alliberar espai de memòria assignat per l'objecte o instància de classe derivada.

El destructor virtual garanteix que primer s'anomena el destructor de la classe derivada. A continuació, es crida al destructor de la classe base per alliberar l'espai ocupat pels dos destructors a la classe d'herència, cosa que ens salva de la fuga de memòria. Es recomana fer el vostre destructor virtual sempre que la vostra classe sigui polimòrfica.

Per a més informació, consulteu Virtual Destructor

28. És possible la sobrecàrrega del destructor? En cas afirmatiu, explica i si no, per què?

La resposta senzilla és NO no podem sobrecarregar un destructor. És obligatori només destructor per classe en C++. També cal esmentar que Destructor no pren arguments ni té un paràmetre que pugui ajudar a sobrecarregar.

Preguntes d'entrevista C++ - Nivell intermedi

29. Quines operacions estan permeses en els punters?

Els punters són les variables que s'utilitzen per emmagatzemar la ubicació de l'adreça d'una altra variable. Les operacions que es permeten a un punter són:

  1. Increment/Disminució d'un punter
  2. Suma i resta d'un nombre enter a un punter
  3. Comparació de punters del mateix tipus

30. Quina és la finalitat de la esborrar operador?

L'operador delete s'utilitza per eliminar/eliminar totes les característiques/propietats d'un objecte desassignant la seva memòria; a més, al final retorna veritable o fals. En termes simples, destrueix o desassigna els objectes de matriu i que no són (punter) que són creats per noves expressions.

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

Per a més informació, consulteu Suprimeix l'operador

31. En què és diferent suprimir [] de suprimir?

suprimir[]

esborrar

S'utilitza per esborrar tota una matriuS'utilitza per eliminar un sol punter
S'utilitza per eliminar els objectes de nou[]; Amb això, podem dir que suprimir[] s'utilitza per eliminar una matriu d'objectesS'utilitza per eliminar els objectes de nou; Amb això, podem dir que esborrar s'utilitza per eliminar un únic objecte
Pot cridar tants destructors que vulguiNomés pot cridar el destructor d'una classe una vegada

32. Què saps de la classe d'amics i de la funció d'amics?

Una classe amiga és una classe que pot accedir tant a les variables protegides com a les privades de les classes on es declara com a amiga.

Exemple de classe d'amics:

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


Una funció amiga és una funció que s'utilitza per accedir als membres de dades privades, protegides i públiques o a les funcions membres d'altres classes. Es declara amb una paraula clau amic. L'avantatge d'una funció amiga és que no està lligada a l'àmbit de la classe i un cop declarada en una classe, a més, no pot ser cridada per un objecte de la classe; per tant pot ser cridat per altres funcions. Tenint en compte tots els punts esmentats podem dir que una funció amiga és una funció global .

Exemple de funció d'amic:

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


Per a més informació, consulteu el funció d'amic i classe d'amic

33. Què és un error de desbordament?

L'error de desbordament es produeix quan el nombre és massa gran per al tipus de dades. En termes senzills, es tracta d'un tipus d'error que és vàlid per al definit però que supera l'interval definit on hauria de coincidir/mentir.

Per exemple, l'interval del tipus de dades int és –2,147,483,648 a 2,147,483,647 i si declarem una variable de mida 2,247,483,648 generarà un error de desbordament.

34. Què fa l'operador Scope Resolution?

Un operador de resolució d'àmbit es denota amb un ' :: 'símbol. Igual que el seu nom, aquest operador resol la barrera d'abast d'un programa. Un operador de resolució d'àmbit s'utilitza per fer referència a una funció membre o una variable global fora del seu àmbit, a la qual també pot accedir a la variable o funció oculta en un programa.

La resolució d'abast s'utilitza per a nombroses tasques:

  1. Per accedir a una variable global quan hi ha una variable local amb el mateix nom
  2. Per definir la funció fora de la classe
  3. En cas d'herències múltiples
  4. Per a l'espai de noms

Per a més informació, consulteu Operador de resolució d'abast

35. Quins són els modificadors d'accés C++?

La restricció d'accés especificada als membres de la classe (ja sigui una funció membre o un membre de dades) es coneix com a modificadors/especificadors d'accés.

Els modificadors d'accés són de 3 tipus:

  1. Privat - No s'hi pot accedir ni es pot veure des de fora de la classe
  2. Protegit - S'hi pot accedir si i només si el descriptor d'accés és la classe derivada
  3. Públic - S'hi pot accedir o es pot veure des de fora de la classe

Per a més informació, consulteu Modificadors d'accés

36. Pots compilar un programa sense la funció principal?

Sí, és absolutament possible compilar un programa sense main(). Per exemple Utilitzeu macros que defineixen el principal

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

Per a més informació, consulteu Es pot compilar un programa sense la funció principal

37. Què és STL?

STL es coneix com a biblioteca de plantilles estàndard, és una biblioteca que proporciona 4 components com el contenidor, els algorismes i els iteradors.

C++ STL

Per a més informació, consulteu STL en C++

38. Definir la funció en línia. Podem tenir una funció en línia recursiva en C++?

Una funció en línia és una forma de sol·licitud, no una comanda a un compilador, que resulta en l'inserció de la nostra funció al cos de la funció principal. Una funció en línia es pot convertir en sobrecàrrega si el temps d'execució de la funció és inferior al temps de canvi de la funció de trucada a la funció cridada. Per fer una funció en línia, utilitzeu la paraula clau en linia abans i definiu la funció abans que es faci cap trucada a la funció.

Funció en línia

Explicació de la funció en línia

Sintaxi:

inline data_type function_name() { Body; }>

La resposta és No; No pot ser recursiu.

mètodes de cadena java

Una funció en línia no pot ser recursiva perquè en el cas d'una funció en línia el codi només es col·loca a la posició des d'on es crida i no manté una informació a la pila necessària per a la recursivitat.

A més, si escriviu una paraula clau en línia davant d'una funció recursiva, el compilador l'ignorarà automàticament perquè el compilador només la pren com a suggeriment.

Per a més informació, consulteu Funció en línia

39. Què és una classe abstracta i quan la fas servir?

Una classe abstracta és una classe dissenyada específicament per ser utilitzada com a classe base. Una classe abstracta conté almenys una funció virtual pura. Declara una funció virtual pura utilitzant a especificador pur (= 0) en la declaració d'una funció de membre virtual a la declaració de classe

No podeu utilitzar una classe abstracta com a tipus de paràmetre, un tipus de retorn de funció o el tipus d'una conversió explícita, ni podeu declarar un objecte d'una classe abstracta. Tanmateix, es pot utilitzar per declarar punters i referències a una classe abstracta.

S'utilitza una classe abstracta si voleu proporcionar una funcionalitat comuna implementada entre totes les implementacions del component. Les classes abstractes us permetran implementar parcialment la vostra classe, mentre que les interfícies no tindrien cap implementació per a cap membre. En paraules senzilles, les classes abstractes són una bona solució si voleu proporcionar detalls d'implementació als vostres fills, però no voleu permetre que una instància de la vostra classe s'instanciï directament.

40. Quins són els membres de dades estàtiques i les funcions dels membres estàtics?

El membre de dades estàtiques d'una classe és un membre de dades normal però precedit d'una paraula clau estàtica. S'executa abans de main() en un programa i s'inicialitza a 0 quan es crea el primer objecte de la classe. Només és visible per a una classe definida, però el seu abast és de tota la vida.

Sintaxi:

  static Data_Type Data_Member;>

La funció de membre estàtica és la funció de membre que s'utilitza per accedir a altres membres de dades estàtiques o altres funcions de membre estàtiques. També es defineix amb una paraula clau estàtica. Podem accedir a la funció membre estàtica utilitzant el nom de classe o els objectes de classe.

Sintaxi:

classname::function name(parameter);>

Preguntes d'entrevista C++: nivell expert

41. Quin és l'ús principal de la paraula clau Volàtil?

Igual que el seu nom, les coses poden canviar de sobte i de manera inesperada; Per tant, s'utilitza per informar al compilador que el valor pot canviar en qualsevol moment. A més, la paraula clau volàtil impedeix que el compilador realitzi l'optimització del codi. Estava pensat per ser utilitzat en interfície amb maquinari assignat a memòria, controladors de senyals i instruccions de codi màquina.

Per a més informació, consulteu això Volàtil

42. Defineix la classe d'emmagatzematge en C++ i anomena'n algunes

La classe d'emmagatzematge s'utilitza per definir les característiques (durada de vida i visibilitat) d'una variable o funció. Aquestes característiques solen ajudar a rastrejar l'existència d'una variable durant el temps d'execució d'un programa.

Sintaxi:

storage_class var_data_type var_name;>

Alguns tipus de classes d'emmagatzematge:

Exemples de classe d'emmagatzematge

Per a més informació, consulteu Classe d'emmagatzematge

43. Què és un especificador de classe d'emmagatzematge mutable? Com es poden utilitzar?

Igual que el seu nom, l'especificador de classe d'emmagatzematge mutable s'utilitza només en un membre de dades de classe per fer-lo modificable encara que el membre sigui part d'un objecte declarat com a const. Els membres estàtics o const o de referència no poden utilitzar l'especificador mutable. Quan declarem una funció com a const, aquest punter passat a la funció es converteix en const.

44. Definiu la variable d'abast del bloc.

Per tant, l'abast d'una variable és una regió on una variable és accessible. Hi ha dues regions d'abast, A global i bloc o local.

Una variable d'àmbit de bloc també es coneix com a variable d'àmbit local. Una variable que es defineix dins d'una funció (com main) o dins d'un bloc (com bucles i blocs if) és una variable local. Es pot utilitzar NOMÉS dins d'aquella funció/bloc en particular en què es declara. una variable d'abast de bloc no estarà disponible fora del bloc encara que el bloc estigui dins d'una funció.

Per a més informació, consulteu Abast d'una variable

edat de mia khalifa

45. Quina és la funció de la paraula clau Auto?

La paraula clau auto es pot utilitzar per declarar una variable amb un tipus complex d'una manera senzilla. Podeu utilitzar auto per declarar una variable si la frase d'inicialització conté plantilles, punters a funcions, referències a membres, etc. Amb les capacitats d'inferència de tipus, podem passar menys temps havent d'escriure coses que el compilador ja sap. Com que tots els tipus es dedueixen només en la fase del compilador, el temps de compilació augmenta lleugerament però no afecta el temps d'execució del programa.

Per a més informació, consulteu Cotxes en C++

46. ​​Definiu l'espai de noms en C++.

Els espais de noms ens permeten organitzar els elements amb nom que, d'altra manera, tindrien un abast global en àmbits més petits, la qual cosa ens permet donar-los l'abast de l'espai de noms. Això permet que les parts del programa s'organitzin en diferents àmbits lògics amb noms. L'espai de noms proporciona un lloc per definir o declarar identificadors com ara variables, mètodes i classes.

O podríem dir que Un espai de noms és una zona declarativa que dóna als identificadors (noms de tipus, funcions, variables, etc.) dins d'ella un àmbit. Els espais de noms s'utilitzen per organitzar el codi en categories lògiques i per evitar conflictes de noms, que poden passar quan teniu moltes biblioteques a la vostra base de codi.

Per a més informació, consulteu Espai de noms en C++

47. Quan s'utilitza el tipus de retorn void()?

La paraula clau void, quan s'utilitza com a tipus de retorn de funció, indica que la funció no retorna cap valor. Quan s'utilitza com a llista de paràmetres per a una funció, void indica que la funció no pren paràmetres. Les funcions sense retorn de valors també es coneixen com a funcions buits. Es diuen nuls perquè no estan dissenyats per retornar res. És cert, però només parcialment. No podem retornar valors de funcions buits, però certament podem retornar alguna cosa. Tot i que les funcions void no tenen cap tipus de retorn, poden retornar valors.

Per a més informació, consulteu Tipus de devolució nul .

48. Quina diferència hi ha entre la còpia superficial i la còpia profunda?

Còpia superficial

Còpia profunda

A la còpia superficial, s'emmagatzema una còpia de l'objecte original i finalment només es copia l'adreça de referència. En termes senzills, la còpia superficial es duplica el menys possibleA la còpia profunda, s'emmagatzemen la còpia de l'objecte original i les còpies repetitives. En termes senzills, la còpia profunda ho duplica tot
Una còpia superficial d'una col·lecció és una còpia de l'estructura de la col·lecció, no dels elements. Amb una còpia poc profunda, ara dues col·leccions comparteixen elements individuals.Una còpia profunda d'una col·lecció són dues col·leccions amb tots els elements de la col·lecció original duplicats.
Una còpia poc profunda és més ràpidaLa còpia profunda és relativament més lenta.

Per a més informació, consulteu Còpia superficial VS Còpia profunda

49. Podem anomenar una funció virtual des d'un constructor?

Sí, podem cridar una funció virtual des d'un constructor. Però pot llançar una excepció d'anul·lació.

50. Què són els punters buits?

Igual que el seu nom, un punter buit és un punter que no està associat a res ni a cap tipus de dades. No obstant això, un punter buit pot contenir el valor d'adreça de qualsevol tipus i es pot convertir d'un tipus de dades a un altre.

Per a més informació, es refereix a Void Pointer en C++

Pregunta de bonificació:

Què és ' això 'punter en C++?

això punter permet que cada objecte tingui accés a la seva pròpia adreça mitjançant un punter essencial. Totes les funcions dels membres prenen això punter com a argument implícit. això punter es pot utilitzar per referir-se a l'objecte cridant dins d'una funció membre.

  • això El punter s'utilitza per passar un objecte com a paràmetre a un altre mètode.
  • Cada objecte obté la seva pròpia còpia del membre de dades.
  • això El punter s'utilitza per declarar indexadors.

Per a més informació, consulteu això punter en C++