Les méthodes sont des fonctions dont le but est de permettre des opérations sur les données cachées des objets. Cependant les méthodes se distinguent particulièrement des fonctions par leur syntaxe d'appel. Cela peut créer des problèmes, notamment si l'on désire que l'objet appelant la méthode ne soit pas son premier argument. Heureusement;, il existe la possibilité en C++ de déclarer une fonction amie d'une classe. Cette déclaration donne à la fonction le droit de pouvoir accéder aux données cachées des objets de la classe. Il est donc possible de définir une fonction, appelée comme une fonction, qui a les mêmes caractéristiques qu'une méthode.
De plus, une fonction peut être amie de plusieurs classes, lui donnant ainsi la possibilité d'accéder aux données privées de ces classes. Ceci est particulièrement avantageux pour des fonctions réalisant des opérations sur des objets de plusieurs classes.
La déclaration d'une fonction amie se fait à l'aide du mot clé friend suivi de la déclaration normale de la fonction.
Les constructeurs et les destructeurs - ainsi que les fonctions virtuelles - ne peuvent être des fonctions amies : ce sont obligatoirement des méthodes.