2010-09-30 23 views

Répondre

22

C'est redondant. Foo a déjà accès à tous les membres de Foo. Deux objets Foo peuvent accéder aux membres de l'autre.

class Foo { 
public: 
    int touchOtherParts(const Foo &foo) {return foo.privateparts;} 
private: 
    int privateparts; 
}; 

Foo a,b; 
b.touchOtherParts(a); 

Le code ci-dessus fonctionnera très bien. B accédera au membre de données privé d'un.

+5

+1 très original avec des parties intimes touchantes – Alex

+2

@Alex: c'est un vieux jeu de mots C++, que C++ est probablement le seul langage où l'on permet à ses amis de toucher ses parties intimes :) –

+3

... mais pas les parents – Arun

3

Il est redondant et inutile. De plus, je reçois l'avertissement suivant en g ++

warning: class ‘Foo’ is implicitly friends with itself 
4

Oui il est légal pour un objet de classe Foo pour accéder aux membres privés d'un autre objet de la classe Foo. Ceci est souvent nécessaire pour des choses comme la construction de copie et l'affectation, et aucune déclaration d'ami spécial n'est requise.

0

Les classes qui s'auto-associent ont du sens si elles sont des modèles, car chaque instanciation avec des paramètres distincts est une classe différente.