Gratuit fonction par rapport au membre de la fonction

Quel est l'avantage d'avoir une fonction libre (dans l'espace de noms anonymes et ne sont accessibles que dans un seul fichier source) et l'envoi de toutes les variables comme paramètres par opposition à une classe privée fonction de membre libre de tous les paramètres et accéder aux variables membres directement? Merci!

en-tête:

 Class A {
    int myVariable;
    void DoSomething() {
       myVariable = 1;
    }
 };

source:

 namespace {
    void DoSomething2(int &a) {
        a = 1;
    }
 }

 int A::SomeFunction() {
    DoSomething2(myVariable); //calling free function
    DoSomething(); //calling member fucntion
 }

Si vous préférez faire d'eux des membres alors que faire si j'ai un cas que j'ai d'abord appeler une fonction qui n'a pas accès à toutes les variables de membre, mais que les appels de fonction à une autre fonction qui est de l'accès à un membre. Devraient-ils être tous les deux des fonctions de membre ou libre?

  • Pouvez-vous au moins d'écrire un code qui essaie de compiler?
  • non, le lien est sur l'interface publique, pas sur la mise en œuvre
  • permettez-moi d'insister, c'est sur l'utilisation des fonctions de membre ou pas. Permettez-moi de citer la réponse en disant: "Par le fait d'avoir des tas et des tas de méthodes qui dépendent directement de l'intérieur de la classe, le moindre changement implique un ensemble de réécriture. Il n'a pas besoin de l'être."
  • vos points sont bien appréciés, mais ils se réfèrent tous à des interfaces, pas implémentations. Certains des avantages sont les mêmes bien que, moins de recompilation.
  • Un autre avantage peut être qu'une classe qui est légèrement plus petite taille. Mais je comprends maintenant pourquoi vous attach moi sur la mise en œuvre.
InformationsquelleAutor Jana | 2014-01-09