tiens c´est la première fois que je vais regarder la page mais ya quand même quelques petites " erreurs" ( qui n´en sont pas vraiment mais ca peut prêter à confusion pour les débutants)
Déjà au sujet de l´opérateur de résolution de portée, il ne sert pas à définir des fonctions membres mais à accéder aux éléments d´un espace de nom précis ( ou d´une classe dans ton cas précis).
Le fait déclarer la méthode :
void NomDeLaClasse::NomDeLaFonction()
{
}
indique que tu fais référence à la fonction NomDeLaFonction de la classe NomDeLaClasse etc...
Il arrive souvent que l´on écrive :
{
. ..
Classe::Fonction();
}
souvent utilisé avec des fonctions virtuelles ( pour faire appel à la même fonction définie dans une classe mère)
Ou encore :
Namespace::Fonction();
Namespace::variable;
. ...
bref l´opérateur :: ne se limite pas à une simple déclaration des méthodes de classe.
Ensuite les macros ne sont pas vraiment des fonctions, mais une simple subsitution de texte/code. Il n´y a aucun test effectué sur les paramètres de la macro, à la différence des fonctions en ligne ( inline). L´avantage des inlines c´est justement que le code sera remplacé ( éventuellement, pas toujours le cas) et en plus tu as un test sur le type des paramètres puisque ce sont elles de VRAIES fonctions
Pour finir, il me semble ( mais il faudrait vérifier) que le type bool n´est propre qu´à Microsoft. Donc son utilisation peut ne pas fonctionner sur d´autres plateformes/compilo. Idem pour la taille du type. S´il fait 1 octet avec VC++, je suis pas sur que ce soit le cas avec d´autres compilo ( s´il est défini). Au pire il sera associé à un int ( comme le type BOOL).
enfin voilà c´était juste 3 petites précisions qui me semblaientt importantes à souligner.