tus - ¿Puede una función constructora ser un amigo en c++?
que hacer con amigos para divertirse (1)
Sí puede:
class Y
{
public:
Y();
};
class X
{
private:
void foo() {}
friend Y::Y();
};
Y::Y()
{
X x; x.foo();
}
Según 11.3 Amigos [class.friend]
5) Cuando una declaración de amigo se refiere a un nombre u operador sobrecargado, solo la función especificada por los tipos de parámetros se convierte en amigo. Una función miembro de una clase X puede ser un amigo de una clase Y.
[Ejemplo:
class Y {
friend char* X::foo(int);
friend X::X(char); // constructors can be friends
friend X::~X(); // destructors can be friends
};
—En ejemplo]
(énfasis mío)
¿Podemos declarar constructor de una clase para ser amigo? Creo que no puede ser. Pero leí en algún lugar que puede ser, pero no pude hacerlo. En caso afirmativo, puede proporcionar algún código de ejemplo.