C++ – le langage de programmation incontournable et préféré des codeurs. C’est toujours d’actualité comme c’était le cas au milieu des années 80. En tant que langage de programmation à usage général et orienté objet, il est largement utilisé principalement à chaque fois lors du codage. En conséquence, certains postes exigent que les individus maîtrisent le C++. Il est utilisé par les plus grandes sociétés informatiques telles que Evernote, LinkedIn, Microsoft, Opera, NASA , et Méta en raison de sa fiabilité, de ses performances et du large éventail de paramètres dans lesquels il peut être utilisé. Donc, pour entrer dans ces entreprises, vous devez être minutieux dans ces domaines. Top 50 des questions d'entretien en C++ ce qui peut vous faire passer pour un expert devant les recruteurs.

Pour vous préparer à un entretien, nous avons apporté le Top 50 des questions d'entretien C++ pour débutant, intermédiaire et expérimenté que vous devez absolument traverser pour vous placer parmi les meilleures multinationales.
Questions d'entretien C++ pour les débutants
1. Qu'est-ce que le C++ ? Quels sont les avantages du C++ ?
C++ est un langage de programmation orienté objet qui a été introduit pour combler les lacunes du C. Par orienté objet, nous entendons qu'il fonctionne avec le concept de polymorphisme , héritage , abstraction , encapsulation , objet et classe .
Avantages du C++ :
- C++ est un langage POO ce qui signifie que les données sont considérées comme des objets.
- C++ est un langage multi-paradigmes ; En termes simples, cela signifie que nous pouvons programmer la logique, la structure et la procédure du programme.
- La gestion de la mémoire est une fonctionnalité clé du C++ car elle permet une allocation dynamique de la mémoire.
- Il s'agit d'un langage de programmation de niveau intermédiaire, ce qui signifie qu'il peut développer des jeux, des applications de bureau, des pilotes et des noyaux.
Pour en savoir plus, reportez-vous à l’article – Quels sont les avantages du C++ ?
2. Quels sont les différents types de données présents en C++ ?

Différents types de types de données en C++
Pour plus d'informations, reportez-vous à ' standard' est également connu sous le nom de Standard ou peut être interprété comme un espace de noms. La commande en utilisant l'espace de noms std informe le compilateur de tout ajouter sous le espace de noms std et les inculquer dans le espace de noms global . Toute cette inculcation de l'espace de noms global nous profite d'utiliser cout et manger sans utiliser std :: _operator_.
Pour plus d'informations, reportez-vous à espace de noms et std .
4. Que sont les références en C++ ?
Lorsqu'une variable est décrite comme référence, elle devient un alias de la variable déjà existante. En termes simples, une variable référencée est une autre variable nommée d'une variable existante en gardant à l'esprit que les modifications apportées à la variable de référence seront reflétées dans la variable déjà existante. Une variable de référence est précédée d'un '&' symbole.
Syntaxe:
int GFG = 10; // reference variable int& ref = GFG;>
Pour plus d'informations, reportez-vous à références en C++
5. Qu'entendez-vous par appel par valeur et appel par référence ?
Dans ce langage de programmation pour appeler une fonction nous avons 2 méthodes : Appel par valeur et Appel par référence
Appel par valeur | Appel par référence |
|---|---|
| Une copie d'une variable est transmise. | Une variable elle-même est transmise fondamentalement. |
| Appeler une fonction en envoyant les valeurs en copiant des variables. | Appel d'une fonction en envoyant l'adresse de la variable passée. |
| Les modifications apportées à la fonction ne sont jamais répercutées en dehors de la fonction sur la variable. En bref, la valeur d'origine n'est jamais modifiée dans Call by Value. | Les modifications apportées aux fonctions sont visibles en dehors de la fonction sur la fonction passée. En bref, la valeur d'origine est modifiée dans Call by référence. |
| Les paramètres réels et formels transmis sont stockés dans différents emplacements de mémoire. Par conséquent, rendre Call by Value un peu de mémoire insuffisante | Les paramètres réels et formels transmis sont stockés dans le même emplacement mémoire. Par conséquent, rendre l’appel par référence un peu plus efficace en termes de mémoire. |
Pour plus d'informations, reportez-vous à la différence entre l'appel par valeur et l'appel par référence
6. Définir le jeton en C++
Un jeton est le plus petit élément individuel d'un programme compris par un compilateur. Un jeton comprend les éléments suivants :
- Mots clés – Qui contiennent une signification particulière pour le compilateur
- Identifiants – Qui détiennent une valeur/identité unique
- Constantes – Qui ne changent jamais leur valeur tout au long du programme
- Cordes – Qui contient la séquence homogène de données
- Symboles spéciaux – Ils ont une signification particulière et ne peuvent être utilisés à d’autres fins ; par exemple: [] () {}, ; * = #
- Les opérateurs – Qui effectue les opérations sur l’opérande
Pour plus d'informations, reportez-vous à Jetons en C++
7. Quelle est la différence entre C et C++ ?
C | C++ |
|---|---|
| C'est un langage de programmation procédural. En termes simples, il ne prend pas en charge les classes et les objets | Il s'agit d'un mélange de langages de programmation procéduraux et orientés objet. En termes simples, il prend en charge les classes et les objets. |
| Il ne prend en charge aucun concept de POO tel que le polymorphisme, l'abstraction de données, l'encapsulation, les classes et les objets. | Il prend en charge tous les concepts de données |
| Il ne prend pas en charge la surcharge des fonctions et des opérateurs. | Il prend en charge respectivement la surcharge des fonctions et de l'opérateur. |
| C'est un langage axé sur les fonctions | C'est un langage orienté objet |
Pour plus d'informations, reportez-vous à Différence entre C et C++
8. Quelle est la différence entre une structure et une classe ?
Structure | Classe |
|---|---|
| Les membres de la structure sont toujours en mode public par défaut | Les membres de la classe peuvent être en modes privé, protégé et public. |
| Les structures sont du type valeur. Ils n’ont de valeur qu’en mémoire. | Les classes sont de type référence. Il contient une référence d'un objet en mémoire. |
| La mémoire dans les structures est stockée sous forme de piles | La mémoire des classes est stockée sous forme de tas. |
Pour plus d'informations, reportez-vous au Différence entre structure et classe.
9. Quelle est la différence entre une référence et un pointeur ?
Référence pointeurs en c | Aiguille |
|---|---|
| La valeur d'une référence ne peut pas être réaffectée | La valeur d'un pointeur peut être réaffectée |
| Il ne pourra jamais contenir un nul valeur car il a besoin d’une valeur existante pour devenir un alias de | Il peut contenir ou pointer vers un nul valeur et être qualifié de nullptr ou pointeur nul |
| Cela ne peut pas fonctionner avec des tableaux | Cela peut fonctionner avec des tableaux |
| Pour accéder aux membres de la classe/struct, il utilise un ' . ' | Pour accéder aux membres de la classe/struct, il utilise un ' -> ' |
| L'emplacement mémoire de référence est facilement accessible ou peut être utilisé directement | L'emplacement mémoire d'un pointeur n'est pas accessible facilement car nous devons utiliser un déréférencement ' * ' |
Pour plus d'informations, reportez-vous au Différence entre référence et pointeur
10. Quelle est la différence entre la surcharge de fonctions et la surcharge d’opérateurs ?
Surcharge de fonctions | Surcharge de l'opérateur |
|---|---|
| Il s'agit essentiellement de définir une fonction de nombreuses manières, de sorte qu'il existe de nombreuses façons de l'appeler ou, en termes simples, vous disposez de plusieurs versions de la même fonction. | Il s'agit essentiellement de s'entraîner à donner une signification particulière à la signification existante d'un opérateur ou, en termes simples, à redéfinir la signification prédéfinie. |
| Les fonctions paramétrées sont un bon exemple de surcharge de fonctions, car en modifiant simplement l'argument ou le paramètre d'une fonction, vous la rendez utile à différentes fins. | Le polymorphisme est un bon exemple de surcharge d'opérateur car un objet de classe d'allocations peut être utilisé et appelé par différentes classes à des fins différentes. |
Exemple de surcharge de fonctions :
| Exemple de surcharge d'opérateur :
|
Pour plus d'informations, reportez-vous à Surcharge de l'opérateur et Surcharge de fonctions
11. Quelle est la différence entre un tableau et une liste ?
Tableaux | Listes |
|---|---|
| Les tableaux sont des emplacements de mémoire contigus de types de données homogènes stockés dans un emplacement ou une taille fixe. | Les listes sont des éléments individuels classiques qui sont liés ou connectés les uns aux autres à l'aide de pointeurs et n'ont pas de taille fixe. |
| Les tableaux sont de nature statique. | Les listes sont de nature dynamique |
| Utilise moins de mémoire que les listes chaînées. | Utilise plus de mémoire car il doit stocker la valeur et l'emplacement mémoire du pointeur |
Pour plus d'informations, reportez-vous à Tableaux vs liste
12. Quelle est la différence entre une boucle while et une boucle do-while ?
Boucle while | faire pendant que la boucle |
|---|---|
| La boucle While est également appelée boucle contrôlée par l'entrée. | La boucle do-while est appelée boucle de contrôle de sortie |
| Si la condition n'est pas satisfaite, les instructions à l'intérieur de la boucle ne s'exécuteront pas | Même si la condition n'est pas satisfaite, les instructions à l'intérieur de la boucle s'exécuteront au moins une fois. |
Exemple d'une boucle while : pendant que(état) {instructions à exécuter;}; | Exemple d'une boucle do while : faire { déclarations à exécuter; } while(condition ou expression); |
Pour plus d'informations, reportez-vous au Différence entre les boucles while et do-while
13. Discutez de la différence entre le préfixe et le suffixe ?
préfixe | suffixe |
|---|---|
| Cela revient simplement à mettre l'opérateur avant l'opérande | Cela revient simplement à mettre l'opérateur après l'opérande |
| Il s'exécute avant '; ' | Il s'exécute après '; ' |
| L'associativité du préfixe ++ est de droite à gauche | L'associativité de postfix ++ est de gauche à droite |
Pour plus d'informations, reportez-vous au Différence entre préfixe et suffixe
14. Quelle est la différence entre new et malloc() ?
nouveau | malloc() |
|---|---|
| new est un opérateur qui effectue une opération | malloc est une fonction qui renvoie et accepte des valeurs |
| new appelle les constructeurs | malloc ne peut pas appeler un constructeur |
| new est plus rapide que malloc car c'est un opérateur | malloc est plus lent que new car c'est une fonction |
| new renvoie le type de données exact | malloc renvoie vide* |
Pour plus d'informations, reportez-vous à Différence entre nouveau et malloc()
15. Quelle est la différence entre les fonctions virtuelles et les fonctions virtuelles pures ?
Fonction virtuelle | Fonction virtuelle pure |
|---|---|
| Une fonction virtuelle est une fonction membre d'une classe de base qui peut être redéfinie dans une autre classe dérivée. | Une fonction virtuelle pure est une fonction membre d'une classe de base qui est uniquement déclarée dans une classe de base et définie dans une classe dérivée pour l'empêcher de devenir une classe abstraite. |
| Une fonction virtuelle a sa définition dans sa classe de base respective. | Il n'y a pas de définition dans Pure Virtual Function et est initialisé avec un spécificateur pur (= 0). |
| La classe de base possède une fonction virtuelle qui peut être représentée ou instanciée ; En termes simples, son objet peut être réalisé. | Une classe de base ayant une fonction virtuelle pure devient abstraite qui ne peut être représentée ou instanciée ; En termes simples, cela signifie que son objet ne peut pas être réalisé. |
Pour plus d'informations, reportez-vous au Différence entre les fonctions virtuelles et les fonctions virtuelles pures
16. Que sont les classes et les objets en C++ ?
Une classe est un type de données défini par l'utilisateur dans lequel toutes les fonctions membres et toutes les données membres sont personnalisées en fonction des demandes et des exigences. En outre, elles sont toutes accessibles à l'aide d'un objet . Pour déclarer un type de données défini par l'utilisateur, nous utilisons un mot-clé classe.
Un objet est une instance d'une classe et d'une entité avec une valeur et un état ; En termes simples, il est utilisé comme catalyseur ou pour représenter un membre du groupe. Il peut contenir différents paramètres ou aucun.
Note: Une classe est un modèle qui définit les fonctions utilisées par un objet.
Pour plus d'informations, reportez-vous à ceci Que sont les classes et les objets
17. Qu'est-ce que la substitution de fonction ?
Lorsqu'une fonction du même nom, des mêmes arguments ou paramètres et du même type de retour déjà présent/déclaré dans la classe de base est utilisée dans une classe dérivée, on parle de remplacement de fonction. Il s'agit d'un exemple de polymorphisme d'exécution ou de liaison tardive, ce qui signifie que la fonction remplacée sera exécutée au moment de l'exécution.
Pour plus d'informations, reportez-vous à Remplacement de fonction en C++
18. Quels sont les différents concepts de POO en C++ ?
- Des classes : Il s'agit d'un type de données défini par l'utilisateur
- Objets : C'est une instance d'une classe
- Abstraction: C'est une technique consistant à afficher uniquement les détails nécessaires
- Encapsulation : Encapsulation des données dans une seule unité
- Héritage: La capacité d'une classe à dériver des propriétés et des caractéristiques d'une autre classe
- Polymorphisme: Le polymorphisme est connu comme plusieurs formes d'une même chose.
Pour plus d'informations, reportez-vous à Divers concepts de POO en C++
19. Expliquer l'héritage
La capacité ou l'aptitude d'une classe à dériver des propriétés et des caractéristiques d'une autre classe est appelée héritage. En termes simples, il s'agit d'un système ou d'une technique permettant de réutiliser et d'étendre des classes existantes sans les modifier.
Pour plus d'informations, reportez-vous à Héritage
java diviser la chaîne par délimiteur
20. Quand devrions-nous utiliser l’héritage multiple ?
Les héritages multiples signifient qu’une classe dérivée peut hériter de deux ou plusieurs classes de base/parentes. Ceci est utile lorsqu'une classe dérivée doit combiner de nombreux attributs/contrats et hériter de tout ou partie de l'implémentation de ces attributs/contrats. Pour prendre un exemple concret, considérons vos parents où le parent A est votre papa, le parent B est votre maman et l'enfant C est vous.

Héritages multiples
Pour plus d'informations, reportez-vous à Héritage Multiple .
21. Qu'est-ce que l'héritage virtuel ?
L'héritage virtuel est une technique qui garantit qu'une seule copie des variables membres d'une classe de base est héritée par les classes dérivées des petits-enfants. En termes simples, l'héritage virtuel est utilisé lorsque nous avons affaire à une situation d'héritages multiples mais que nous souhaitons empêcher plusieurs instances de la même classe d'apparaître dans la hiérarchie d'héritage.
22. Qu'est-ce que le polymorphisme en C++ ?
Le polymorphisme est connu comme plusieurs formes d’une même chose. En termes simples, on peut dire que le polymorphisme est la capacité d'afficher une fonction membre sous plusieurs formes en fonction du type d'objet qui les appelle.
En d’autres termes, nous pouvons aussi dire qu’un homme peut être l’employé de quelqu’un, le fils de quelqu’un, le père de quelqu’un et le mari de quelqu’un ; c'est ainsi que le polymorphisme peut être projeté dans la vie réelle.
Il existe 2 types de polymorphisme :
- Polymorphisme au moment de la compilation
- Surcharge de fonctions
- Surcharge de l'opérateur
- Polymorphisme au moment de l'exécution
- Fonction prioritaire
- Fonction virtuelle
Pour en savoir plus, référez-vous à Polymorphisme
23. Quels sont les différents types de polymorphisme en C++ ?
Il existe 2 types de polymorphisme
Polymorphisme au moment de la compilation ou liaison statique
Ce type de polymorphisme est obtenu pendant le temps de compilation du programme, ce qui le rend un peu plus rapide que le temps d'exécution. De plus, l’héritage n’y participe pas. Il est composé de 2 autres techniques :
Surcharge de fonction : Lorsqu’il existe plusieurs fonctions portant le même nom mais des paramètres différents, on parle alors de surcharge de fonctions.
C++ // same name different arguments int GFG() {} int GFG(int a) {} float GFG(double a) {} int GFG(int a, double b) {}>
Surcharge de l'opérateur : Il s'agit essentiellement de s'entraîner à donner une signification particulière à la signification existante d'un opérateur ou, en termes simples, à redéfinir la signification prédéfinie.
class GFG { // private and other modes statements public returnType operator symbol(arguments){ statements } statements };>
Polymorphisme d'exécution ou liaison tardive
Le polymorphisme d'exécution a lieu lorsque les fonctions sont invoquées pendant l'exécution.
Remplacement de fonction : Le remplacement de fonction se produit lorsqu’une fonction membre de la classe de base est redéfinie dans une classe dérivée avec les mêmes arguments et le même type de retour.
// 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; }> Sortir:
Function of derived class>
Pour plus d'informations, reportez-vous à Différents types de polymorphisme
24. Comparez le polymorphisme au moment de la compilation et le polymorphisme au moment de l'exécution
Polymorphisme au moment de la compilation | Polymorphisme d'exécution |
|---|---|
| On l'appelle également liaison statique et liaison anticipée. | Elle est également appelée liaison dynamique et liaison tardive. |
| C'est rapide car l'exécution est connue tôt au moment de la compilation. | Il est lent par rapport au moment de la compilation car l'exécution est connue au moment de l'exécution. |
| Ceci est obtenu par une surcharge des fonctions et une surcharge des opérateurs. | Ceci est réalisé par des fonctions virtuelles et la substitution de fonctions. |
Pour plus d'informations, reportez-vous à Polymorphisme au moment de la compilation et polymorphisme au moment de l'exécution
25. Expliquez le constructeur en C++.
Un constructeur est un type spécial de fonction membre d'une classe, dont le nom est le même que celui de la classe par laquelle il est invoqué et initialise la valeur de l'objet d'une classe.
Il existe 3 types de constructeurs :
A. Constructeur par défaut : C'est le type de constructeur le plus basique qui n'accepte aucun argument ni paramètre. Même s'il n'est pas appelé, le compilateur l'appelle automatiquement lorsqu'un objet est créé.
Exemple:
C++ class Class_name { public: Class_name() { cout << 'I am a default constructor'; } };>
B. Constructeur paramétré : C'est un type de constructeur qui accepte des arguments ou des paramètres. Il doit être appelé explicitement en passant des valeurs dans les arguments car ces arguments aident à initialiser un objet lors de sa création. Il porte également le même nom que celui de la classe.
En outre, il est utilisé pour surcharger les constructeurs.
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; }> Sortir
G.x = 10, G.y = 15>
C. Copier le constructeur : Un constructeur de copie est une fonction membre qui initialise un objet en utilisant un autre objet de la même classe. De plus, le constructeur Copy prend une référence à un objet de la même classe comme argument.
Exemple:
C++ Sample(Sample& t) { id = t.id; }>
Pour plus d'informations, reportez-vous à Constructeurs
26. Que sont les destructeurs en C++ ?
Les destructeurs sont membres de fonctions d'une classe qui suppriment un objet lorsqu'un objet de la classe devient hors de portée. Les destructeurs portent le même nom que la classe précédé d'un signe tilde (~). De plus, les destructeurs suivent un de bas en haut approche, contrairement aux constructeurs qui suivent une approche descendante.
jbouton
Syntaxe:
~constructor_name(); // tilde sign signifies that it is a destructor>
Pour plus d'informations, reportez-vous à Destructeur .
27. Qu'est-ce qu'un destructeur virtuel ?
Lors de la destruction d'instances ou d'objets d'une classe dérivée à l'aide d'un objet pointeur de classe de base, un destructeur virtuel est invoqué pour libérer de l'espace mémoire alloué par l'objet ou l'instance de classe dérivée.
Le destructeur virtuel garantit que le destructeur de la classe dérivée est appelé en premier. Ensuite, le destructeur de la classe de base est appelé pour libérer l'espace occupé par les deux destructeurs dans la classe d'héritage, ce qui nous évite la fuite de mémoire. Il est conseillé de rendre votre destructeur virtuel chaque fois que votre classe est polymorphe.
Pour plus d'informations, reportez-vous à Destructeur virtuel
28. La surcharge du destructeur est-elle possible ? Si oui, expliquez et si non, pourquoi ?
La réponse simple est NON nous ne pouvons pas surcharger un destructeur. Il est obligatoire de n'utiliser qu'un destructeur par classe en C++. Il convient également de mentionner que Destructor ne prend pas d'arguments et n'a pas non plus de paramètre qui pourrait aider à surcharger.
Questions d'entretien C++ – Niveau intermédiaire
29. Quelles opérations sont autorisées sur les pointeurs ?
Les pointeurs sont les variables utilisées pour stocker l'emplacement de l'adresse d'une autre variable. Les opérations autorisées sur un pointeur sont :
- Incrément/Décrément d'un pointeur
- Addition et soustraction d'un entier à un pointeur
- Comparaison de pointeurs du même type
30. Quel est le but du supprimer opérateur?
L'opérateur delete permet de supprimer/supprimer toutes les caractéristiques/propriétés d'un objet en désallouant sa mémoire ; de plus, il renvoie finalement vrai ou faux. En termes simples, il détruit ou libère les objets tableau et non-tableau (pointeur) créés par de nouvelles expressions.
C++ int GFG = new int[100]; // uses GFG for deletion delete[] GFG;>
Pour plus d'informations, reportez-vous à Supprimer l'opérateur
31. En quoi la suppression [] est-elle différente de la suppression ?
supprimer[] | supprimer |
|---|---|
| Il est utilisé pour supprimer un tableau entier | Il est utilisé pour supprimer un seul pointeur |
| Il est utilisé pour supprimer les objets de nouveau[]; Par là, nous pouvons dire que supprimer[] est utilisé pour supprimer un tableau d'objets | Il est utilisé pour supprimer les objets de nouveau; Par là, nous pouvons dire que supprimer est utilisé pour supprimer un seul objet |
| Il peut appeler autant de destructeurs qu'il le souhaite | Il ne peut appeler le destructeur d'une classe qu'une seule fois |
32. Que savez-vous de la classe d'amis et de la fonction d'ami ?
Une classe amie est une classe qui peut accéder à la fois aux variables protégées et privées des classes où elle est déclarée comme amie.
Exemple de classe d'amis :
C++ class Class_1st { // ClassB is a friend class of ClassA friend class Class_2nd; statements; } class Class_2nd { statements; }>
Une fonction ami est une fonction utilisée pour accéder aux données membres privées, protégées et publiques ou aux fonctions membres d'autres classes. Il est déclaré avec un mot-clé ami. L'avantage d'une fonction amie est qu'elle n'est pas liée à la portée de la classe et qu'une fois déclarée dans une classe, de plus, elle ne peut pas être appelée par un objet de la classe ; il peut donc être appelé par d'autres fonctions. Compte tenu de tous les points mentionnés, nous pouvons dire qu'une fonction ami est une fonction globale .
Exemple de fonction ami :
C++ class GFG { statements; friend dataype function_Name(arguments); statements; } OR class GFG { statements' friend int divide(10, 5); statements; }>
Pour plus d'informations, reportez-vous au fonction ami et classe ami
33. Qu'est-ce qu'une erreur de débordement ?
Une erreur de débordement se produit lorsque le nombre est trop grand pour que le type de données puisse le gérer. En termes simples, il s'agit d'un type d'erreur qui est valable pour le défini mais qui dépasse la plage définie où elle devrait coïncider/se situer.
Par exemple, la plage du type de données int est –2 147 483 648 à 2 147 483 647 et si on déclare une variable de taille 2 247 483 648 cela générera une erreur de débordement.
34. Que fait l'opérateur Scope Résolution ?
Un opérateur de résolution de portée est désigné par un ' :: ' symbole. Tout comme son nom, cet opérateur résout la barrière de portée dans un programme. Un opérateur de résolution de portée est utilisé pour référencer une fonction membre ou une variable globale hors de leur portée et à laquelle il peut également accéder à la variable ou à la fonction masquée dans un programme.
La résolution de portée est utilisée pour de nombreuses tâches :
- Pour accéder à une variable globale lorsqu'il existe une variable locale du même nom
- Pour définir la fonction en dehors de la classe
- En cas de successions multiples
- Pour l'espace de noms
Pour plus d'informations, reportez-vous à Opérateur de résolution de portée
générateur de nombres aléatoires Java
35. Quels sont les modificateurs d'accès C++ ?
La restriction d'accès spécifiée aux membres de la classe (qu'il s'agisse d'une fonction membre ou d'un membre de données) est connue sous le nom de modificateurs/spécificateurs d'accès.
Les modificateurs d'accès sont de 3 types :
- Privé - Il n'est ni accessible ni visible de l'extérieur de la classe.
- Protégé – Il est accessible si et seulement si l'accesseur est la classe dérivée
- Publique - Il est accessible ou consultable depuis l'extérieur de la classe.
Pour plus d'informations, reportez-vous à Modificateurs d'accès
36. Pouvez-vous compiler un programme sans la fonction principale ?
Oui, il est tout à fait possible de compiler un programme sans main(). Par exemple, utilisez des macros qui définissent le principal
C++ // C++ program to demonstrate the // a program without main() #include #define fun main int fun(void) { printf('Geeksforgeeks'); return 0; }> Pour plus d'informations, reportez-vous à Pouvez-vous compiler un programme sans la fonction principale
37. Qu'est-ce que la STL ?
STL est connue sous le nom de Standard Template Library, c'est une bibliothèque qui fournit 4 composants comme un conteneur, des algorithmes et des itérateurs.

C++ STL
Pour plus d'informations, reportez-vous à STL en C++
38. Définir la fonction en ligne. Pouvons-nous avoir une fonction en ligne récursive en C++ ?
Une fonction en ligne est une forme de requête et non une commande adressée à un compilateur qui entraîne l'intégration de notre fonction dans le corps de la fonction principale. Une fonction en ligne peut devenir une surcharge si le temps d'exécution de la fonction est inférieur au temps de commutation de la fonction appelante à la fonction appelée. Pour créer une fonction en ligne, utilisez le mot-clé en ligne before et définissez la fonction avant que des appels ne soient effectués à la fonction.

Explication de la fonction en ligne
Syntaxe:
inline data_type function_name() { Body; }>La réponse est Non; Cela ne peut pas être récursif.
Une fonction en ligne ne peut pas être récursive car dans le cas d'une fonction en ligne, le code est simplement placé dans la position d'où il est appelé et ne conserve pas une information sur la pile qui est nécessaire à la récursion.
De plus, si vous écrivez un mot-clé en ligne devant une fonction récursive, le compilateur l'ignorera automatiquement car le mot-clé en ligne n'est considéré que comme une suggestion par le compilateur.
Pour plus d'informations, reportez-vous à Fonction en ligne
39. Qu'est-ce qu'une classe abstraite et quand l'utilisez-vous ?
Une classe abstraite est une classe spécialement conçue pour être utilisée comme classe de base. Une classe abstraite contient au moins une fonction virtuelle pure. Vous déclarez une fonction virtuelle pure en utilisant un spécificateur pur (= 0) dans la déclaration d'une fonction membre virtuelle dans la déclaration de classe
Vous ne pouvez pas utiliser une classe abstraite comme type de paramètre, type de retour de fonction ou type de conversion explicite, ni déclarer un objet d'une classe abstraite. Cependant, il peut être utilisé pour déclarer des pointeurs et des références à une classe abstraite.
Une classe abstraite est utilisée si vous souhaitez fournir une fonctionnalité commune implémentée parmi toutes les implémentations du composant. Les classes abstraites vous permettront d'implémenter partiellement votre classe, alors que les interfaces n'auraient aucune implémentation pour aucun membre. En termes simples, les classes abstraites conviennent parfaitement si vous souhaitez fournir des détails d’implémentation à vos enfants mais ne souhaitez pas autoriser l’instanciation directe d’une instance de votre classe.
40. Que sont les données membres statiques et les fonctions membres statiques ?
Les données membres statiques d'une classe sont des données membres normales mais précédées d'un mot clé statique. Il s'exécute avant main() dans un programme et est initialisé à 0 lors de la création du premier objet de la classe. Il n’est visible que par une classe définie mais sa portée s’étend sur toute une vie.
Syntaxe:
static Data_Type Data_Member;>
La fonction membre statique est la fonction membre utilisée pour accéder à d’autres données membres statiques ou à d’autres fonctions membres statiques. Il est également défini avec un mot-clé static. Nous pouvons accéder à la fonction membre statique en utilisant le nom de la classe ou les objets de classe.
nombre à chaîne java
Syntaxe:
classname::function name(parameter);>
Questions d'entretien C++ – Niveau expert
41. Quelle est l’utilisation principale du mot-clé Volatile ?
Tout comme son nom, les choses peuvent changer soudainement et de manière inattendue ; Il est donc utilisé pour informer le compilateur que la valeur peut changer à tout moment. De plus, le mot-clé volatile empêche le compilateur d'effectuer une optimisation du code. Il était destiné à être utilisé lors de l'interface avec du matériel mappé en mémoire, des gestionnaires de signaux et des instructions de code machine.
Pour plus d'informations, reportez-vous à ceci Volatil
42. Définissez la classe de stockage en C++ et nommez-en quelques-unes
La classe de stockage est utilisée pour définir les fonctionnalités (durée de vie et visibilité) d'une variable ou d'une fonction. Ces fonctionnalités aident généralement à retracer l'existence d'une variable pendant l'exécution d'un programme.
Syntaxe:
storage_class var_data_type var_name;>
Quelques types de classes de stockage :

Exemples de classe de stockage
Pour plus d'informations, reportez-vous à Classe de stockage
43. Qu'est-ce qu'un spécificateur de classe de stockage mutable ? Comment peuvent-ils être utilisés ?
Tout comme son nom, le spécificateur de classe de stockage mutable est utilisé uniquement sur un membre de données de classe pour le rendre modifiable même si le membre fait partie d'un objet déclaré comme const. Les membres statiques, const ou de référence ne peuvent pas utiliser le spécificateur mutable. Lorsque nous déclarons une fonction comme const, ce pointeur passé à la fonction devient const.
44. Définissez la variable de portée du bloc.
La portée d'une variable est donc une région où une variable est accessible. Il existe deux régions de portée : A globale et bloc ou locale.
Une variable de portée de bloc est également appelée variable de portée locale. Une variable définie à l'intérieur d'une fonction (comme main) ou à l'intérieur d'un bloc (comme les boucles et les blocs if) est une variable locale. Il peut être utilisé UNIQUEMENT dans la fonction/le bloc particulier dans lequel il est déclaré. une variable de portée bloc ne sera pas disponible en dehors du bloc même si le bloc est à l'intérieur d'une fonction.
Pour plus d'informations, reportez-vous à Portée d'une variable
45. Quelle est la fonction du mot-clé Auto ?
Le mot-clé auto peut être utilisé pour déclarer simplement une variable de type complexe. Vous pouvez utiliser auto pour déclarer une variable si la phrase d'initialisation contient des modèles, des pointeurs vers des fonctions, des références à des membres, etc. Grâce aux capacités d'inférence de type, nous pouvons passer moins de temps à écrire des choses que le compilateur connaît déjà. Comme tous les types sont déduits uniquement lors de la phase de compilation, le temps de compilation augmente légèrement mais cela n'affecte pas le temps d'exécution du programme.
Pour plus d'informations, reportez-vous à Voitures en C++
46. Définissez l'espace de noms en C++.
Les espaces de noms nous permettent d'organiser des éléments nommés qui auraient autrement une portée globale en portées plus petites, ce qui nous permet de leur donner une portée d'espace de noms. Cela permet d'organiser les parties du programme en étendues logiques distinctes avec des noms. L'espace de noms fournit un emplacement pour définir ou déclarer des identifiants tels que des variables, des méthodes et des classes.
Ou nous pourrions dire qu'un espace de noms est une zone déclarative qui donne une portée aux identifiants (noms de types, fonctions, variables, etc.) qu'il contient. Les espaces de noms sont utilisés pour organiser le code en catégories logiques et pour éviter les conflits de noms, qui peuvent survenir lorsque votre base de code contient de nombreuses bibliothèques.
Pour plus d'informations, reportez-vous à Espace de noms en C++
47. Quand le type de retour void() est-il utilisé ?
Le mot clé void, lorsqu'il est utilisé comme type de retour de fonction, indique que la fonction ne renvoie pas de valeur. Lorsqu'il est utilisé comme liste de paramètres pour une fonction, void indique que la fonction ne prend aucun paramètre. Les fonctions sans retour de valeur sont également appelées fonctions vides. On les appelle nuls car ils ne sont pas conçus pour renvoyer quoi que ce soit. C'est vrai, mais seulement partiellement. Nous ne pouvons pas renvoyer les valeurs des fonctions void, mais nous pouvons certainement renvoyer quelque chose. Bien que les fonctions void n'aient pas de type de retour, elles peuvent renvoyer des valeurs.
Pour plus d'informations, reportez-vous à Type de retour nul .
48. Quelle est la différence entre la copie superficielle et la copie approfondie ?
Copie superficielle | Copie approfondie |
|---|---|
| En copie superficielle, une copie de l'objet original est stockée et seule l'adresse de référence est finalement copiée. En termes simples, la copie superficielle duplique le moins possible | Dans Deep Copy, la copie de l'objet original et les copies répétitives sont toutes deux stockées. En termes simples, la copie profonde duplique tout |
| Une copie superficielle d'une collection est une copie de la structure de la collection, et non des éléments. Avec une copie superficielle, deux collections partagent désormais des éléments individuels. | Une copie complète d'une collection est constituée de deux collections avec tous les éléments de la collection originale dupliqués. |
| Une copie superficielle est plus rapide | La copie approfondie est comparativement plus lente. |
Pour plus d'informations, reportez-vous à Copie superficielle VS copie approfondie
49. Peut-on appeler une fonction virtuelle depuis un constructeur ?
Oui, on peut appeler une fonction virtuelle depuis un constructeur. Mais cela peut lever une exception de substitution.
50. Que sont les pointeurs vides ?
Tout comme son nom, un pointeur vide est un pointeur qui n’est associé à rien ni à aucun type de données. Néanmoins, un pointeur vide peut contenir la valeur d'adresse de n'importe quel type et peut être converti d'un type de données à un autre.
Pour en savoir plus, les informations se réfèrent à Pointeur vide en C++
Question bonus:
Qu'est-ce que ' ce ‘ pointeur en C++ ?
ce pointer permet à chaque objet d'avoir accès à sa propre adresse via un pointeur essentiel. Toutes les fonctions membres prennent ce pointeur comme argument implicite. ce aiguille peut être utilisé pour faire référence à l’objet appelant dans une fonction membre.
- ce le pointeur est utilisé pour passer un objet en paramètre à une autre méthode.
- Chaque objet obtient sa propre copie du membre de données.
- ce le pointeur est utilisé pour déclarer les indexeurs.
Pour plus d'informations, reportez-vous à ce pointeur en C++