Quand utiliser les fonctions inline
Les fonctions inline sont utilisées de façon optimale pour les petites fonctions telles que l'accès aux membres de données privées. L'objectif principal de ces fonctions d'accesseur à une ou deux lignes est de retourner des informations d'état sur les objets. Les fonctions courtes sont sensibles aux charges mémoire des appels de fonction. Les fonctions longues passent proportionnellement moins de temps dans la séquence d'appel/retour et bénéficient moins de l'inlining.
Exemple
La classe Point, introduite dans Résultats de l'appel de fonction peut être optimisée comme suit :
// when_to_use_inline_functions.cpp
class Point
{
public:
// Define "accessor" functions as
// reference types.
unsigned& x();
unsigned& y();
private:
unsigned _x;
unsigned _y;
};
inline unsigned& Point::x()
{
return _x;
}
inline unsigned& Point::y()
{
return _y;
}
int main()
{
}
Si la manipulation des coordonnées est une opération relativement courante dans un client de cette classe, la spécification des deux fonctions d'accesseur (x et y dans l'exemple précédent) comme inline stocke généralement la charge sur :
Appels de fonction (notamment le paramètre passe et place l'adresse de l'objet dans la pile)
Conservation du frame de pile de l'appelant
Nouvelle installation du frame de pile
Communication de la valeur de retour
Restauration de l'ancien frame de pile
Return