operator=
#
Membre obligatoire
Le standard C++ exige que l’operator= soit défini comme une fonction membre de la classe.
Il doit retourner *this pour permettre le chaînage (a = b = c).
Il doit aussi empêcher l’auto-affectation.
Sans cette condition, alors on a un UB (Undefined Behavior).
NamedPoint& NamedPoint::operator=(const NamedPoint& p)
{
if (this == &p)
{
return *this;
}
...
return *this;
}
📝 À NOTER
Cet opérateur est obligatoire pour les classes qui gèrent des ressources dynamiques (pointeurs bruts, allocations).
Dans le cas contraire, alors operator= = default est suffisant.
operator<< et operator>>
#
Non-membres obligatoires
...Durant le cours, nous utiliserons le C++23.
Dans certains cas, si la version du compilateur utilisé est trop ancienne, alors certaines fonctionnalités de C++23 ne seront pas disponibles.
À l’inverse, il est aussi possible que certaines “possibilités” aient été enlevées dans les versions les plus récentes du C++.
Par exemple, la possibilité de lire, depuis std::cin dans un char* a été supprimée depuis C++20, pour des raisons de sécurité (risque de dépassement de buffer).
...Lorsqu’un appel de fonction ne correspond pas exactement à une signature, le compilateur C++ effectue des conversions implicites pour tenter de trouver une correspondance.
Ce mécanisme est au coeur de la résolution de surcharge (overload resolution).
Les 3 rangs de conversion
#
Le compilateur C++ classe les conversions implicites en 3 rangs, du plus prioritaire au moins prioritaire :
| Rang | Nom | Exemples |
|---|
| 1 | Exact match | Aucune conversion, ajout de const, lvalue-to-rvalue |
| 2 | Promotion | float → double, short → int, char → int |
| 3 | Conversion | double → int, double → float, int → float |
Exemple concret
#
Considérons deux surcharges :
...Durant le cours de C++, nous utiliserons Visual Studio 2026 Community Edition comme environnement de développement.
Ce document a pour but de vous aider à prendre en main cet environnement de développement, et à vous donner les premières étapes pour créer un projet, écrire du code, compiler, exécuter et débugger votre programme.
Dans certains cas, il faut aussi configurer Visual Studio pour s’assurer que la bonne version du C++ est utilisée (C++23).
...