Si la fonction est de petite taille (la chance que c'est souvent faible), et si la fonction peut être mis dans la tête, sans y compris des myriades d'autres en-têtes (parce que votre fonction dépend d'eux), il est parfaitement valable de le faire. Si vous les déclarez extern inline, alors le compilateur est nécessaire pour lui donner la même adresse à chaque unité de compilation:
headera.h:
inline string method() {
return something;
}
Les fonctions de membres sont implicites inline fournies qu'ils sont définis à l'intérieur de leur classe. La même chose est vrai pour les leur vraie: Si, ils peuvent être mis dans la tête, sans tracas, vous pouvez le faire en effet.
Parce que le code de la fonction est de mettre dans l'en-tête et le visible, le compilateur est capable de inline appels à eux, c'est de mettre le code de la fonction directement sur le site d'appel (pas tellement parce que vous mettez inline avant, mais plus parce que le compilateur décide de cette façon, si. Mettre inline est seulement une indication pour le compilateur concernant l'). Qui peut en résulter une amélioration de la performance, parce que le compilateur voit maintenant où les arguments correspondent à des variables locales à la fonction, et où l'argument n'est pas alias uns les autres, et le dernier mais non le moins, la fonction de cadre de l'allocation n'est plus nécessaire.
Ma compréhension est lors de la compilation, le compilateur va développez le fichier d'en-tête et le lieu où il est inclus. Est-ce exact?
Oui, c'est correct. La fonction sera définie dans chaque endroit où vous inclure son en-tête. Le compilateur se soucient de mettre une seule occurrence dans le programme résultant, en éliminant les autres.