QCM sur la programmation orientée objet en C++ avec des réponses pour la préparation des concours, des tests en ligne, examens et aux certifications. Ces questions et réponses sur C++ comprennent divers sujets. Et sont tirés d’un vrai concours écrit. Cette méthode d’apprentissage systématique préparera facilement toute personne pour réussir son test sur C++.
1. Seules les fonctions de classe peuvent accéder aux données et elles fournissent l’interface entre les données, les objets et le programme. Cette sorte d’isolement des données de l’accès direct par le programme s’appelle _______________.
A Abstraction de données
B Masquage de l’information
C Liaison de l’information
D Encapsulation de données
B
Masquage de l’information. Une caractéristique clé de la programmation orientée objet, c’est-à-dire que les données sont masquées dans une classe, de sorte qu’elles ne peuvent pas être consultées par erreur ou par des fonctions extérieures de la classe. ‘private’, ‘protected’ et ‘public’ sont trois types de protection disponibles au sein d’une classe.
2. ___________ est une fonction membre déclarée dans une classe mère et redéfinie par une classe fille.
A Fonction virtuelle
B Fonction statique
C Fonction ami
D Fonction membre const
A
Fonction virtuelle est une fonction membre déclarée dans une classe mère et redéfinie par une classe fille.
3. La syntaxe pour déclarer une fonction virtuelle pure est _________.
Avirtual void afficher()==0
Bvoid virtual afficher()==0
Cvirtual void afficher()=0
Dvoid virtual afficher()=0
C
En C++, une fonction virtuelle pure est déclarée en utilisant le mot-clé virtual, suivi de la déclaration de la fonction et de = 0. Une classe qui contient au moins une fonction virtuelle pure devient une classe abstraite, ce qui signifie qu’elle ne peut pas être instanciée directement. Les classes dérivées doivent redéfinir cette fonction pour pouvoir être instanciées.
4. Les expressions logiques produisent des résultats de type ____________.
A static
B explicit
C int
D bool
D
En C++, une expression logique (par exemple a > b, x == y ou p && q) produit un résultat de type bool. Ce type ne peut prendre que deux valeurs : true (vrai) ou false (faux). Il est principalement utilisé dans les conditions des instructions if, while et for.
5. Nous pouvons initialiser une valeur de variable statique d’une classe uniquement lorsque son objet est créé. Aucune autre initialisation n’est autorisée.
A Vrai
B Faux
B
En C++, une variable membre static appartient à la classe et non à ses objets. Elle peut être initialisée indépendamment de la création d’un objet, généralement en dehors de la classe (ou directement dans la classe avec inline static depuis C++17). Il n’est donc pas nécessaire de créer un objet pour lui attribuer une valeur.
6. Quelle est la sortie du code suivant?
#include <iostream>
using namespace std;
class main
{
public:
main() {cout << "Constructeur est appelé\n";}
~main() {cout << "Destructeur est appelé\n";}
};
int main()
{
main obj;
}
A Constructeur est appelé
Destructeur est appelé
B Constructeur est appelé
C Destructeur est appelé
D Erreur de compilation.
D
Le programme ci-dessus semble syntaxiquement correct mais il échoue lors de la compilation. C’est à cause du nom de la classe. Le nom de la classe est « main », il est donc nécessaire d’indiquer au compilateur que « main » est le nom de la classe.
#include <iostream>
using namespace std;
class main
{
public:
main() {cout << "Constructeur est appelé\n";}
~main() {cout << "Destructeur est appelé\n";}
};
int main()
{
class main obj;
}
7. Lorsqu’une classe mère est héritée en mode privée par la classe fille, alors_____________.
A Les membres protégés de la classe mère deviennent des membres privés de la classe fille
B Les membres publics de la classe mère deviennent des membres privés de la classe fille
C Les deux A et B sont vrais.
D Aucune de ces réponses n’est vraie.
C
En C++, lorsqu’une classe est héritée en mode private, les membres publics et protégés de la classe mère deviennent privés dans la classe fille. Ils restent accessibles à l’intérieur de la classe dérivée, mais ne sont plus accessibles depuis l’extérieur via un objet de cette classe. Les membres privés de la classe mère, quant à eux, ne sont jamais directement accessibles dans la classe fille.
8. Quelle est la différence entre les spécificateurs d’accès « protected » et « private » lors de l’héritage?
A Le membre private n’est pas héritable et n’est pas accessible dans la classe fille.
B Le membre protected est héritable et également accessible dans une classe fille.
C Les deux sont héritables mais private est accessible dans la classe fille.
D Les deux sont héritables mais protected n’est pas accessible dans la classe fille.
B
En C++, les membres protected sont hérités et restent accessibles dans les classes dérivées, tandis que les membres private sont également hérités, mais ne sont pas directement accessibles dans la classe fille. Ainsi, la principale différence est que les membres protected peuvent être utilisés par les classes dérivées, contrairement aux membres private.
9. En C++, il est obligatoire d’initialiser les variables const.
A Vrai
B Faux
A
En C++, une variable déclarée const doit obligatoirement être initialisée au moment de sa déclaration, car sa valeur ne peut plus être modifiée par la suite. Si aucune valeur initiale n’est fournie, le compilateur génère une erreur de compilation.
10. Lorsqu’une classe est définie dans une fonction ou un bloc, elle est appelée ___________.
A Classe imbriquée
B Classe de bloc
C Classe locale
D Classe privé
C
En C++, une classe locale est une classe définie à l’intérieur d’une fonction ou d’un bloc de code. Sa portée est limitée à ce bloc, ce qui signifie qu’elle ne peut être utilisée qu’à l’intérieur de celui-ci. Les classes locales sont généralement employées lorsque leur utilisation est spécifique à une fonction et qu’elles n’ont pas besoin d’être accessibles ailleurs dans le programme.