Développer en langage C++
Quel mécanisme n?est pas disponible en C++
passage par référence
surcharge de variable
valeur par défaut pour les paramètres de fonctions
surcharge de fonctions
Quelle syntaxe n?est pas correcte :
void f1 ( int & val ) ;
void f2 ( const int & val ) ;
void f3 ( char * val = NULL) ;
void f4 ( int = 0, char * ) ;
Quelle est la fonction membre permettant d?initialiser une instance d?une classe A possédant un attribut de type int :
void initA ( int val ) ;
A ( int val = 0 ) ;
A createA ( int val ) ;
void A ( int val ) ;
Dans quel contexte est-on obligatoirement amené à utiliser la pseudo variable this :
dans une méthode d?instance, pour accéder à une propriété de l?objet courant
dans une méthode de classe, pour accéder à une propriété de l?objet courant
dans une méthode d?instance, pour manipuler l?adresse de l?objet courant
dans une méthode de classe, pour initialiser les attributs statiques
Quand doit-on redéfinir l?opérateur d?affectation dans une classe :
en toutes circonstances
lorsque la classe possède des attributs alloués dynamiquement
lorsque la classe possède des propriétés statiques
lorsque la classe possède un destructeur
La surcharge d?un opérateur applicable sur des instances d?une classe ne peut pas s?effectuer par :
une fonction membre sans argument
une fonction globale avec 1 argument
une fonction membre avec 1 argument
une fonction globale sans argument
Quel attribut d?accès n'est pas applicable en C++ :
private
global
public
protected
En C++, une classe dérivée ne peut pas :
redéfinir des méthodes de sa classe de base
hériter de plusieurs classes
invoquer des méthodes publiques de sa classe de base
accéder à des données privées de sa classe de base
Une fonction membre virtuelle ne peut pas être :
le mécanisme C++ permettant la mise en ?uvre du polymorphisme
une fonction membre dont l?adresse de la méthode est résolue à l?exécution
applicable à un destructeur
générée inline
Etant données : class A { public : virtual void trace () { cout << "Trace A" << endl; } }; class B : public A { public : virtual void trace () { cout << "Trace B" << endl; } }; Quelle est l?expression qui affiche "Trace B" à l?écran :
A * pA1 = new A(); pA1->trace();
B * pB1 = (B*)new A(); pB1->trace();
A unA; B unB; unA = unB; unA.trace();
A* pA2 = new B(); pA2->trace();
Quel flux n?est pas prédéfini en C++ :
cout
cfile
cerr
cin
Quelle proposition provoque une erreur à la compilation :
cout << "uneChaine" ;
cout << 'a' , 'b' ;
cout << hex << 20 ;
cout << endl ;
Etant donnée la définition suivante : template <class T, int i> class A{...}; Quelle est la proposition valide :
A<int, 3> unA;
class B : public A<char, 20> {...};
typedef A<char *, 20> C;
elles sont toutes valides
Une classe template est :
une classe paramétrable à l?aide d?un ou plusieurs types génériques
Une classe qui possède des attributs virtuels
une classe non instanciable
une classe qui possède des attributs persistants