Solutionnaire
RTTI
Namespace
- Q3: Examiner le contenu du fichier (1169demo02exo3.cpp) puis compiler le.
[Solutionnaire](1169demo02exo3sol.cpp).
- a. Vous constaterez après la phase de compilation que le compilateur g++ a signalé une série de "warnings" ou "avertissements", corriger les puis exécuter le programme.
- b. Vous allez remarquer des erreurs à l'exécution. Ces erreurs n'ont pas été détectées par le compilateur car ce sont des erreurs algorithmiques non liées au langage de programmation. Chercher ces erreurs et corriger les.
- Q4: Indiquez si les fragments de code suivants génèrent au moins une erreur à la compilation.
Si c'est le cas expliquez la, dans le cas contraire indiquez ce qui sera affiché en sortie.
- a.
namespace NS1 {
class T {};
void f(T x) {cout << "test1\n";}
}
using namespace NS1;
NS1::T param;
int main() {
f(param);
return 0;
}
- compil+exec ok. Affichage en sortie: test1
- b.
namespace NS2 {
class T {};
void f(T x) {cout << "test1\n";}
}
using namespace NS2;
void f(NS2::T x){cout << "test2\n";}
int main() {
NS2::T param;
f(param);
return 0;
}
- ambiguïté à la compil. L'appel de f() dans la fonction main. La fonction f est définie dans NS2
et aussi comme une fonction "globale"!.
- Q5: Soit le fragment de code suivant:
namespace Noir {
int j;
void print(int);
char ch;
}
namespace Blanc {
int j;
void print(int);
double vision;
}
int j;
void UneFonction() {
using namespace Noir;
using namespace Blanc;
j = 0; // -1-
print(5); // -2-
ch = 'a'; // -3-
vision = 7.65; // -4-
int j = 10; // -5-
::j = 5; // -6-
Blanc::j = 5; // -7-
Noir::print(j); // -8-
}
Tout en justifiant votre réponse, dites si les appels -1- à -8- sont corrects ou pas ? (Chaque question est indépendante.)
- -1- incorrecte: la variable j est locale à la fonction "UneFonction". Elle n'a pas été déclarée.
- -2- incorrecte: ambiguïté. 2 fonctions "print" possibles: "Blanc::print" et "Noir::print".
- -3- ok: "ch" de "Noir".
- -4- ok: "vision" de "Blanc".
- -5- ok: la variable "j" est locale à la fonction "UneFonction" aucune collision avec "j" de "Noir" et "j" de "Blanc".
- -6- ok: "j" de l'espace globale. La aussi aucune collision (voir -5-).
- -7- ok: appel direct de la variable "j" de "Blanc".
- -8- ok: appel direct de la fonction "print" de "Noir".
|
[top]
|