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

QCM sur 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. Quelle est la syntaxe pour surcharger l’opérateur + pour la classe A?

A int +(arguments){}

B int [+](arguments){}

C A operator+(arguments){}

D A operator[+](arguments){}

C
Surcharge de l'opérateur d'addition en C++
2. Quelle est la sortie du code suivant?
#include<iostream> 
using namespace std; 
  
class MaClasse 
{ 
  public: 
    MaClasse(); 
}; 
  
MaClasse::MaClasse()  { 
    cout << "Constructeur est appelé \n"; 
} 
  
int main() 
{ 
    cout << " Avant \n"; 
    MaClasse maclasse(); 
    cout << " Aprés \n"; 
    return 0; 
}

A Avant
Constructeur est appelé
Aprés

B Avant
Aprés

C Constructeur est appelé
Avant
Aprés

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

B
Notez que la ligne “MaClasse maclasse();” n’est pas un appel de constructeur. Le compilateur considère cette ligne comme une déclaration de fonction « maclasse » qui ne reçoit aucun paramètre et retourne un objet de type MaClasse.
 

 

3. Quelle est la sortie du code suivant?
#include<iostream> 
  
using namespace std; 
  
class MaClasse { 
    int val; 
public: 
    MaClasse (int v = 0) {val = v;} 
    int getValue() { return val; } 
}; 
  
int main() { 
    const MaClasse obj;   
    cout << obj.getValue(); 
    return 0; 
}

A 0

B Valeur aléatoire

C Erreur de compilation

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

C
Un objet const ne peut pas appeler une fonction non-const. Le code ci-dessus peut être corrigé soit en rendant getValue() const, soit en rendant obj non-const.
 

 
On peut corriger le code en ajoutant « const » à getValue() comme suit :

int getValue() const { return val; }

 
Après, le code affiche : 0
 

 

 
 

4. Lequel des opérateurs suivants ne peut pas être surchargé?

A ? :

B +

C

D %

A
?:, :: et . ne peut pas être surchargé +, -, % peut être surchargé.

 

5. Lequel des opérateurs suivants peut être surchargé?

A ? :

B ::

C .

D ==

D
?:, :: et . ne peut pas être surchargé alors que == peut être surchargé.

 

6. Quelle est la sortie du code suivant?
#include<iostream>
  
using namespace std; 
  
class MaClasse { 
    int &val; 
public: 
    MaClasse (int &v) { val = v; } 
    int getValue() { return val; } 
}; 
  
int main() 
{ 
    int v = 10; 
    MaClasse obj(v); 
    cout << obj.getValue() << " "; 
    v = 20; 
    cout << obj.getValue() << endl; 
    return 0; 
}

A 10

B 20

C 10 20

D Erreur de compilation.

D
Puisque val est une référence dans MaClasse, il doit être initialisé avec une liste d’initialisation, comme montré dans le code ci-dessous.

#include<iostream>
  
using namespace std; 
  
class MaClasse { 
    int &val; 
public: 
    MaClasse (int &v):val(v) {  } 
    int getValue() { return val; } 
}; 
  
int main() 
{ 
    int v = 10; 
    MaClasse obj(v); 
    cout << obj.getValue() << " "; 
    v = 20; 
    cout << obj.getValue() << endl; 
    return 0; 
}

La sortie :

 

7. Une exception est générée à l’aide du mot clé __________

A throws

B throw

C threw

D Thrown

B
Des exceptions peuvent être levées n’importe où dans un bloc de code à l’aide de l’instruction throw. L’opérande de l’instruction throw détermine le type pour l’exception. Il peut s’agir de n’importe quelle expression. Le type du résultat de l’expression détermine le type de l’exception levée. Exemple :

double division(int x, int y) {
   if( y == 0 ) {
      throw "Division par zéro!";
   }
   return (x/y);
}

 

 
 

8. Si le constructeur par défaut n’est pas défini, comment les objets de la classe seront-ils créés?

A Une erreur se produira au moment de l’exécution.

B Le compilateur générera une erreur

C Le compilateur fournit son constructeur par défaut pour construire l’objet.

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

C
Si nous définissons notre propre constructeur, le compilateur ne crée pas le constructeur par défaut.

 

9. Quelle est la sortie du code suivant?
#include <iostream> 
using namespace std; 
  
class MaClasse { 
private: 
  static const int val = 10; 
public: 
  static int getValue() { return val; } 
}; 
  
int main() { 
  cout << MaClasse::getValue() << endl; 
  return 0; 
}

A 10

B 0

C Erreur de compilation

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

A
En règle générale, l’initialisation des membres de données dans la déclaration de classe en C++ n’est pas autorisée, mais les membres dont « static const » sont traités différemment et peuvent être initialisés dans la déclaration.
 

 

10. Est-il obligatoire d’appeler un constructeur pour créer un objet?

A Oui

B Non

A
Oui, vous avez besoin d’un constructeur chaque fois que vous créez un objet en C++. Si vous ne spécifiez aucune valeur pour l’objet, un constructeur par défaut est alors appelé et attribue automatiquement une valeur par défaut à des variables de classe.

 

 
 

Laisser un commentaire

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