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

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. Qu’est-ce qu’un constructeur de copie?

A Un constructeur permet à un utilisateur de déplacer des données d’un objet à un autre.

B Un constructeur pour initialiser un objet avec les valeurs d’un autre objet.

C Un constructeur pour vérifier si les objets sont égaux ou non.

D Un constructeur pour détruire d’autres copies d’un objet donné.

B
Le constructeur de copie permet à l’utilisateur d’initialiser un objet avec les valeurs d’un autre objet au lieu de fournir à nouveau les mêmes valeurs pour initialiser l’objet.

 

2. Quelle est la sortie du code suivant?
#include <iostream> 
using namespace std; 
  
int f(int a, int b = 2, int c = 4) 
{ 
    return (a + b + c); 
} 
  
int main() 
{ 
    cout << f(1, ,8); 
    return 0; 
}

A 7

B 14

C 3

D Erreur de compilation.

D
Avec les arguments par défaut, nous ne pouvons pas ignorer un argument au milieu. Une fois qu’un argument est ignoré, tous les arguments suivants doivent être ignorés. Les appels f(1) et f(1, 8) sont valides.

 

3. La classe X, la classe Y et la classe Z héritent de la classe A. Il s’agit d’un héritage ______

A À plusieurs niveaux

B Hiérarchique

C Multiple

D Simple

B
Lorsque plusieurs classes héritent d’une seule classe de base, cet héritage est appelé héritage hiérarchique, où les fonctionnalités communes du niveau inférieur sont incluses dans la classe de base.
 

 

 
 

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

class MaClasse 
{ 
private: 
    int val; 
public: 
    void setX (int val) { MaClasse::val = val; } 
    void print() { cout << "val = " << val << endl; } 
}; 
  
int main() 
{ 
    MaClasse obj; 
    int val = 10; 
    obj.setX(val); 
    obj.print(); 
    return 0; 
}

A 10

B Le code n’affiche rien.

C Erreur de compilation.

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

A
L’opérateur de résolution de portée :: peut toujours être utilisé pour accéder à un membre du groupe lorsqu’il est masqué par des variables locales. Donc, la ligne MaClasse::val = val; est identique à this->val = val;

 

5. Combien de paramètres un constructeur par défaut requiert-il?

A 0

B 1

C 2

D 3

A
Un constructeur par défaut ne requiert aucun paramètre pour la création d’objets.

 

6. Quelle est la sortie du code suivant?
#include <iostream> 
using namespace std; 
  
class MaClasse 
{ 
    int val; 
public: 
    MaClasse(int v){ val = v; } 
    void show(){ cout << val << endl; } 
}; 
  
int main() 
{ 
    MaClasse obj[2]; 
    obj[0].show(); 
    obj[1].show(); 
    return 0; 
}

A 0 1

B 2

C Erreur de compilation.

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

C
Il y a une erreur de compilation dans la ligne “MaClasse obj[2];”. Il n’existe pas de constructeur par défaut dans la classe MaClasse. Lorsque nous écrivons notre propre constructeur paramétré ou constructeur de copie, le compilateur ne crée pas le constructeur par défaut. Nous pouvons corriger l’erreur en créant un constructeur par défaut dans la classe MaClasse.

 

7. En quoi les constructeurs sont-ils différents des autres fonctions membres de la classe?

A Le constructeur a le même nom que la classe elle-même.

B Les constructeurs ne renvoient rien.

C Les constructeurs sont automatiquement appelés lorsqu’un objet est créé.

D Tout les réponses sont vrais.

D
Toutes les réponses ci-dessus sont les raisons pour lesquelles le constructeur diffère des autres fonctions membres normales d’une classe.

 

 
 

8. Quelle est la sortie du code suivant?
#include <iostream> 
using namespace std; 
  
class MaClasse 
{ 
    int id; 
    static int i; 
public: 
    MaClasse() 
    { 
        i++; 
        id = i; 
        cout << " Constructeur appelé " << id << endl; 
    } 
    ~MaClasse() 
    { 
        cout << " Destructeur appelé " << id << endl; 
    } 
}; 
  
int MaClasse::i = 0; 
  
int main() 
{ 
    MaClasse obj[2]; 
    return 0; 
}

A Constructeur appelé 1
Constructeur appelé 2
Destructeur appelé 2
Destructeur appelé 1

B Constructeur appelé 2
Constructeur appelé 1
Destructeur appelé 1
Destructeur appelé 2

C Constructeur appelé 1
Constructeur appelé 2
Destructeur appelé 2
Destructeur appelé 2

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

A
Dans le programme ci-dessus, l’objet obj[0] est créé en premier, mais l’objet obj[1] est détruit en premier. Les objets sont toujours détruits dans l’ordre inverse de leur création.

 

9. Peut-on surcharger une fonction template ?

A Oui

B Non

A
Une fonction template peut être surchargé avec d’autres fonction template et avec des fonctions normales. Une fonction normale n’est pas liée à une fonction template, même si elle porte le même nom et le même type qu’une spécialisation d’une fonction template potentiellement générée.

 

10. Les variables statiques déclarées dans une classe sont également appelées _________.

A Variable d’instance

B Constante nommée

C Variable globale

D Variable de classe

D
Les variables de classe, également appelées variables statiques, sont déclarées avec le mot clé « static » dans une classe.

 

 
 

Laisser un commentaire

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