Chargement...
 

Langage C++

La déclaration suivante est-elle correcte ? int ControleSaisie( int i, int j=0, ink =4, char *c);
Non
Oui
Les déclarations suivantes sont-elles correctes : int somme(int i, int j ); int somme (int i, int*j) ;
Non
Oui
La portion de code suivante est-elle correcte ? class A { int i; int j; }; A a; a.i=0;
Non
Oui
La portion de code suivante est-elle correcte ? struct A { int a; int b ; A() { this->a=b=0; } };
Non
Oui
Après le code C++11 suivant : class A { A(){ a=1; } a=0; }; A a; Combien vaut a.a ?
0
1
il y aura forcément une erreur de compilation car a.a est ambigu
La séquence suivante est-elle correcte ? struct A { explicit A(int j ) { i=j;} private : int i=1; } int main() { A j=0; }
Non
Oui
Peut-on avoir un constructeur par défaut synthétisé et un constructeur par transtypage dans une classe ?
Non
Oui
Cette syntaxe est-elle possible dans la méthode exemple de la classe Fille, méthode elle même définie dans la classe Mere int Fille::exemple(int i):Mere(i) { }
Non
Oui c'est une liste d'initialisation
Peut-on écrire l'instruction suivante : Classe1 A=Classe2::fonction( B);
Non la syntaxe est erronée
Oui si Classe2 contient un constructeur par transtypage appelé fonction
Oui si Classe2 contient une fonction statique comprenant un argument du type de B et renvoyant un objet de type Classe1
Un constructeur peut utiliser des listes d'initialisation :
Dans sa déclaration uniquement pour des attributs private ou protected
Dans sa déclaration uniquement pour les attributs privates
Dans sa déclaration uniquement pour les attributs publics
Dans sa définition mais uniquement pour les attributs private
Uniquement lors de sa définitin que les attibuts soient privés, publics ou protégés
L'ordre d'utilisation des listes d'initialisation :
Se fait dans l'ordre d'apparition des attibuts dans la liste d'initiation
se fait dans l'ordre de la déclaration dans la classe
Si un attribut était initialisé dans la classe comme l'autorise le C++11 et qu'un constructeur initialise l'attribut en utilisation une liste d'initialisation, la valeur de l'attribut sera :
La valeur de la liste d'initialisation
La valeur intialisée dans la déclaration
Pas initialisé car cela provoquera une erreur de compilation
Si un attribut est initialisé dans une liste d'initialisation d'un constructeur et que cette valeur est réinitialisée dans le corps de la définition du constructeur
C'est la valeur donnée au moment de la liste d'initialisation qui prime
Cela provoquera une erreur du compilateur
La valeur sera modifiée dans le corps du constructeur
Dans la déclaration d'une classe Fille fille de la class Mere qu'elle est la séquence non erronnée
class Fille: public Mere { Fille() explicit ;} ;
class Mere : public Fille { Fille () explicit ; };
Classe Fille : public Mere { };
Classe Fille : public Mere { Fille(); }
Après la déclaration suivante : class Mere { public: int publique; private: int privee; protected : int protegee; }; class Fille : public Mere{ private: int fille; }; Peut on faire : Fille F; F.privee=2;
Non
Oui
class Mere { public: int methode(int i;int j) ; }; class Fille : public Mere{ public: int methode (int i, int j); }; Si on déclare Fille f ; Peut-on faire en sorte que f appelle methode définie dans la classe Mere ?
Non
Oui
Un mutateur est :
Un attribut initialisé à 0
Une méthode qui n'a pas de nom
Une méthode qui positionne un attribut privé
Une variable muette
Le polymorphisme c'est :
D'avoir une méthode déclarée virtuelle dans la classe fille
D'avoir une méthode déclarée virtuelle dans la classe mère
D'avoir une méthode déclarée virtuelle dans la classe mère et d'avoir une méthode de même nom dans la classe fille.
D'avoir une méthode déclarée virtuelle dans la classe mère, d'avoir une méthode de même nom dans la classe fille, et le fait qu'un pointeur sur la classe mère pointant sur un objet de type fille appelle la méthode de la classe fille.
La possibilité d'avoir une méthode qui porte le même nom dans une classe mère et dans une classe fille
Une méthode virtuelle pure
Est une méthode qui est optimisée en fonction du processeur
Est une méthode qui est optimisée en fonction du processeur et qui utilise le qualificateur inline
Est une méthode virtuelle qui est déclarée avec les symbole =0; à la suite de la déclaration et qui n'a pas de définition
Est une méthode virtuelle qui est déclarée avec les symbole =0; à la suite de la déclaration et qui peut également avoir une définition
Sachant que la déclaration de la classe class Mere { private : int methode()=0; }; Puis-je faire : M m;
Non
Oui mais uniquement si une classe dérivée définit methode()
Oui tant que m n'est pas utilisé
Une fonction amie d'une classe
Est une fonction déclarée et définie à l'extérieur de la classe mais qu'on qualifie dans la déclaration de la classe comme amie pour qu'elle puisse accéder à tous les membres de la classe.
Est une fonction déclarée et définie à l'extérieur de la classe mais qu'on redéfinit dans la classe comme amie pour qu'elle puisse accéder à tous les membres de la classe.
Est une fonction déclarée et définie dans la classe avec le qualificateur friend
On peut pour une classe définir un opérateur + permettant d'ajouter deux éléments d'une même classe
Non
Oui
Oui seulement si la classe est abstraite
Si une classe a un opérateur + je peux redéfinir cet opérateur pour une classe dérivée
Faux
Vrai
Pour définir une fonction Symbole prenant un argument de n'importe quel type je dois définir template < class T> void Symbole ( T &arg , ) { ... } Où le code ... doit
Fonctionner pour certains types est préférable mais si la fonction ne marque pas pour tous les types, on aura juste une erreur à la compilation.
Fonctionner quel que soient les types existants dans le programme
Pour caster en C++11 on utilise la syntaxe suivante
(type) i;
static_cast(int)(i);
static_cast<int>(i);
staticcas(int)<i>;
staticcast<int>(i);

Changer de langue

Anglais (English, en)Français (fr)

Recherche