QCM sur la programmation orientée objet en C++ – Partie 10

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. Les fonctions Inline peuvent ne pas fonctionner ______.

A Si la fonction contient des variables statiques.

B Si la fonction contient des variables globales et des variables de registre.

C Si la fonction est récursive.

D Si la fonction contient une valeur constante.

A, C
En C++, une fonction déclarée inline n’est qu’une demande adressée au compilateur, qui reste libre de l’ignorer. Celui-ci peut notamment refuser d’intégrer une fonction si elle est récursive, car son expansion est impossible à effectuer de manière simple, ou si elle contient des variables statiques, dont la gestion complique l’insertion directe du code. Ainsi, les réponses A et C sont correctes.

 

2. Combien de destructeurs sont autorisés dans une classe?

A 1

B 2

C 3

D Un nombre quelconque.

A
Une classe en C++ n’autorise qu’un seul destructeur, appelé à chaque fin de vie d’un objet.

 

3. Quelle est la sortie du code suivant?
#include <iostream> 
using namespace std;

class A 
{
  public: 
     A(); 
    ~A(); 
}; 
A::A() 
{ 
    cout << "Le constructeur est exécuté\n"; 
} 
A::~A() 
{ 
    cout << "Le destructeur est exécuté\n"; 
} 
int main() 
{ 
    delete new A(); 
    return 0; 
}

A Le constructeur est exécuté
Le destructeur est exécuté

B Le destructeur est exécuté

C Le constructeur est exécuté

D Erreur de compilation.

A
L’instruction dans la ligne 20 créera un objet de la classe A sans qu’aucun pointeur ne le pointe.
 

 

 
 

4. Lesquels des énoncés suivants sont correct à propos d’une fonction ami?

A Il peut être appelé avec un objet de classe.

B Il peut avoir des objets comme arguments.

C Il peut avoir des types primitifs comme arguments.

D Il doit être déclarer seulement dans la partie public d’une classe.

E Il ne possède pas le pointeur « this » comme argument.

B, C, E
En C++, une fonction amie (friend) n’est pas une fonction membre de la classe, elle ne possède donc pas le pointeur implicite this (E). Elle peut recevoir des objets de la classe (B) ou des types primitifs comme paramètres (C). En revanche, elle ne peut pas être appelée avec la syntaxe d’une fonction membre (objet.fonction()), et sa déclaration peut apparaître dans les sections public, protected ou private de la classe, ce qui rend les propositions A et D incorrectes.

 

5. Quelle est la sortie du code suivant?
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int x = 123;
    cout << setfill('*') << setw(6) << x;
    return 0;
}

A 123***

B **123

C ***123

D ******

C
La fonction « setfill » définit le caractère de remplissage du flux, et la fonction « setw » définit le paramètre width du flux sur n.

 

6. Lequel des instructions suivants représente une appel explicite au constructeur de classe A?
class A{
	int val;
	
	public:
		A(int v)
		{
			val = v;
		}
}

A A a = A();

B A a = A(2);

C A a(2);

D A a;

B
A a = A(); n’est pas correct car aucun constructeur de ce type n’existe dans la classe A.

 

7. Pour créer une fonction virtuelle pure, nous utilisons _______?

A $

B =0

C %

D &

B
Pour créer une méthode en tant que fonction virtuelle pure, nous devons ajouter ‘=0’ à la fin d’une fonction.

 

 
 

8. Choisissez l’expression correct.

A Nous ne pouvons pas créer une instance d’une classe abstraite

B On peut créer une instance d’une classe abstraite

C On peut créer une instance d’une super classe abstraite

D Aucune de ces réponses n’est vraie.

A
En C++, une classe abstraite est une classe qui contient au moins une fonction virtuelle pure. Elle sert de modèle pour les classes dérivées et ne peut pas être instanciée directement. Seules les classes dérivées qui implémentent toutes les fonctions virtuelles pures peuvent être instanciées.

 

9. Lors de l’héritage de classe en C++, si le mode de visibilité n’est pas fourni, le mode de visibilité par défaut est ___________.

A public

B protected

C private

D Friend

C
En C++, lorsqu’une classe est dérivée sans préciser le mode d’héritage, le compilateur utilise private par défaut (uniquement avec le mot-clé class). Ainsi, les membres publics et protégés de la classe de base deviennent privés dans la classe dérivée. En revanche, si la classe dérivée est déclarée avec le mot-clé struct, le mode d’héritage par défaut est public.

 

10. L’héritage d’une classe fille de la classe mère est indiquée par le symbole ____.

A |

B ::

C :

D ;

C
En C++, l’héritage est indiqué par le symbole : placé après le nom de la classe dérivée, suivi du mode d’héritage (public, protected ou private) et du nom de la classe de base. Ce symbole permet de préciser qu’une classe hérite des membres d’une autre classe.

 

 
 

2 réflexions sur “QCM sur la programmation orientée objet en C++ – Partie 10

  • juin 18, 2022 à 5:19 pm
    Permalien

    Question 5 : la bonne réponse est C et pas B. Le code affiche « ***123 »

    Répondre
    • juin 19, 2022 à 12:16 am
      Permalien

      Merci pour cette remarque 🙂

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *