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.