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

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. Quelle est la sortie du code C++ suivant?
#include<iostream>
using namespace std;
int main()
{
	int x = 2, y = 2;
	cout << ++x << " " << --y << endl;
	return 0;
}

A 2 2

B 1 3

C 3 1

D 1 3

C
La valeur ‘x’ sera incrémenté et la valeur ‘y’ sera décrémenté, le résultat sera donc 3 1.
 

 

2. Lesquels des énoncés suivants sont vrais concernant une fonction membre statique?

A Ils peuvent accéder aux membres de données non statiques.

B Ils peuvent appeler d’autres fonctions membres statiques.

C Ils peuvent accéder aux fonctions et données globales.

D Ils peuvent utiliser le pointeur « this ».

E Ils ne peuvent pas être déclarés comme « const » ou « volatile ».

B, C, E

 

3. Quelle est la sortie du code C++ suivant?
#include<iostream>

using namespace std;

class A 
{
    public:
    virtual void myFunction() {cout << "A" << " " ;}
};
class B: public A
{
    public:
    virtual void myFunction() {cout << "B" << " ";}
};
class C: public B
{
    public:
    virtual void myFunction() {cout << "C" << " ";}
};

int main()
{
    A *a = new C;
    A *b = new B;
    a->myFunction();
    b->myFunction();
    return 0;
}

A A B

B B C

C C B

D A C

C
Un pointeur de la classe mére peut pointer sur des objets de classes filles. Donc, la ligne
A * a = new C; est valide. La ligne a->myFunction(); affiche « C » car l’objet pointé est de classe C et myFunction() est déclaré virtuel sur A et B.

 

 
 

4. La variable statique doit être déclarée dans la section publique de la classe?

A Vrai

B Faux

B

 

5. Quelle est la sortie du code C++ suivant?
#include<iostream>
using namespace std;
int main()
{
	int n1 = 1;
	int n2 = 2;
	int n3 = 3;
	n1 = n2++;
	n2 = --n3;
	cout << n1 << " " << n2 << " " << n3;
	return 0;
}

A 3 2 2

B 2 2 2

C 3 2 1

D 3 3 2

B
Dans ce programme, on incrémente et décrémente les opérandes.
 

 

6. Choisissez la bonne déclaration:

A La pré-incrémentation est plus rapide que la post-incrémentation

B La post-incrémentation est plus rapide que la pré-incrémentation

C La pré-incrémentation est plus lent que la post-incrémentation

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

A
Parce que la pré-incrémentation prend une instruction sur un octet et que la post-incrémentation prend une instruction sur deux octets.

 

7. Quelle est la sortie du code C++ suivant?
#include<iostream> 
using namespace std; 
  
class A 
{ 
private: 
    int val; 

public: 
    A(const A&a) { val = a.val; } 
    void setVal(int v) {val = v;} 
    int getVal() {return val;} 
    void print() { cout << "val = " << getVal(); } 
}; 
  
  
int main() 
{ 
    A a1; 
    a1.setVal(10); 
    A a2 = a1; 
    a2.print(); 
    return 0; 
}

A 10

B Le code n’affiche rien.

C Erreur de compilation

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

C
Puisqu’il existe un constructeur défini par l’utilisateur, le compilateur ne crée pas le constructeur par défaut. Si nous supprimons le constructeur de copie de la classe A, le programme fonctionne correctement et affiche le résultat sous la forme « val = 10».

 

 
 

8. Quel est le rôle du constructeur dans les classes?

A Modifier les données à la demande

B Détruire un objet

C Initialiser les données membres d’un objet lors de sa création

D Appeler des fonctions privées de l’extérieur

C
Un constructeur est utilisé dans les classes pour initialiser les données membres de la classe afin d’éviter les erreurs et surtout les erreurs de segmentation.

 

9. Par défaut, si une fonction avec un minimum de lignes de code est déclarée et définie dans la classe, donc elle devient une fonction Inline.

A Vrai

B Faux

A

 

10. Quelle est la sortie du code C++ suivant?
#include<iostream> 
using namespace std; 
  
int main() 
{ 
    int *p = new int(10); 
    cout << *p; 
    return 0; 
}

A 10

B NULL

C Erreur de compilation.

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

A
L’opérateur « new » peut également initialiser des types de données primitifs. Dans le programme ci-dessus, la valeur à l’adresse « p » est initialisée à 10 à l’aide de l’opérateur « new ».
 

 

 
 

Laisser un commentaire

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