2010-09-30 10 views

Respuesta

22

Eso es redundante. Foo ya tiene acceso a todos los miembros de Foo. Dos objetos Foo pueden acceder a los miembros de cada uno.

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

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

El código anterior funcionará muy bien. B accederá a un miembro de datos privados.

+5

+1 muy original con tocar partes privadas – Alex

+2

@Alex: es un viejo juego de palabras con C++, que C++ es probablemente el único idioma donde uno permite que sus amigos toquen sus partes privadas :) –

+3

... pero no los padres – Arun

3

Es redundante e innecesario. Por otra parte, me sale el siguiente mensaje de advertencia en g ++

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

Sí es legal que un objeto de clase Foo tener acceso a los miembros privados de otro objeto de la clase Foo. Esto es frecuentemente necesario para cosas como la construcción y asignación de copias, y no se requiere ninguna declaración especial de amigos.

0

Las clases de amistad tienen sentido si son plantillas, ya que cada creación de instancias con distintos parámetros es una clase diferente.

Cuestiones relacionadas