Corrigé du TP 1 : Premiers pas pratiques

Utilisation du compilateur

Un programme simple

Fichier essai.cpp

#include <iostream>
 
extern void fonction();
 
int
main()
{
    std::cout << "Bonjour" << std::endl;
    fonction();
}

Fichier fonction.cpp

#include <iostream>
 
void fonction()
{
    std::cout << "Je suis une fonction" << std::endl;
}

Compilation

Si la commande g++ est remplacée par gcc lors l'édition de liens, les bibliothèques spécifiques au C++ ne sont pas intégrées dans l'exécutable, et il manque des symboles.

Constructeurs et paramètres

La première anomalie se situe à la ligne :

Point p1=p2;

La classe Point ne contenant pas de constructeur de copie, il faut être sur que le constructeur généré par le compilateur est correct. C'est le cas ici car la structure Point est simple. Dans le cas de structure plus complexes, le constructeur de copie généré automatiquement n'est en général pas correct.

La seconde anomalie est à la ligne :

Point *tab2=(Point *)malloc(sizeof(Point)*10);

La fonction malloc est à proscrire en C++ : contrairement à l'opérateur new, elle n'appelle pas les constructeurs des objets, et ceux-ci risquent de ne pas être initialisés correctement.

Le mode de passage le plus adapté pour la fonction d'addition est un passage par référence constante. Le passage par référence évite la copie du paramètre, tandis que la constance empêche la fonction appelée de modifier le paramètre. Sans le const, toute modification serait répercutée dans la fonction appelante à cause du passage par référence.

Laisser un commentaire

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

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>