Langage C++, aspects avancés
Etant donnée la définition suivante : class A { public : static int foo(); }; Quel est l?appel valide de la fonction membre foo.
A::foo();
A.foo();
A->foo();
foo();
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 ) ;
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
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
Etant données les déclaration suivantes : A unA; B unB; Sachant que B hérite en public de A, quelle instruction génère une erreur à la compilation :
A * pA= &unB;
unA = unB;
unB = (B)unA;
B * pB = (B*)pA;
Quel attribut d?accès n'est pas applicable en C++ :
private
global
public
protected
Une fonction membre virtuelle pure est :
une fonction membre virtuelle ne possédant pas d?argument
une fonction membre virtuelle ne possédant pas de valeur de retour
une fonction membre virtuelle ne possédant pas de code
une fonction membre virtuelle ne possédant que des données statiques
Quelle assertion sur les classes abstraites est fausse :
non instanciable
contient des méthodes virtuelles pures
ne contient jamais d?attribut
une classe dont on peut hériter