¡Acostúmbrate a escribir juntos! Este es el séptimo día de mi participación en el "Nuevo plan diario de Nuggets · Desafío de actualización de abril", haga clic para ver los detalles del evento .
1️⃣Prólogo
Puntos de conocimiento en este capítulo:
- ¿Qué es la amistad?
- ¿Cuáles son las características de Friends?
- ¿Por qué el concepto de amigo Yuan?
- ¿Cuáles son las categorías de amigos?
- ¿Cómo crear y usar amigos?
2️⃣ Respuesta
✨¿Qué es Amigos?
- Un amigo es una función ordinaria o clase definida fuera de la clase.
- Debe declararse dentro del cuerpo de la clase.
- Para distinguirlo de las funciones miembro de esta clase, prefijaremos la descripción con una palabra clave
friend
- En pocas palabras, un amigo es una relación.
- Una función de clase o relación clase-clase
✨¿Cuáles son las características de la Amistad?
- Los amigos pueden acceder a miembros privados de la clase. (Similar: los amigos son dignos de confianza y pueden revelar parte de su privacidad a sus amigos).
- Las amistades no se pueden heredar (similar: los amigos de tu papá no son necesariamente tus amigos)
- Las amistades son unidireccionales (similar: la clase A es amiga de la clase B, pero B no es necesariamente amiga de A)
- Las relaciones de amistad no se pueden pasar (de manera similar: es decir, B es amigo de A, C es amigo de B, pero C no es necesariamente amigo de A).
✨¿Por qué el concepto de Amistad?
- Sabemos que las clases tienen encapsulación, es decir, ocultación de datos.
- Solo las funciones miembro de la clase pueden acceder a los miembros privados de la clase.
- Otras funciones en el archivo fuente no pueden acceder a miembros privados.
- Luego , generalmente configuraremos algunas interfaces públicas para abrirlas al mundo exterior.
- Es decir, las funciones que no son miembros pueden acceder a los miembros públicos de la clase.
- Pero a veces, el acceso a clases puede ser un poco rígido en algunas aplicaciones.
- Si los miembros de datos se definen como públicos, se destruye la función oculta.
- Así que existe el concepto de amigos .
- A los amigos se les otorga acceso a partes privadas de la clase desde el exterior (es decir, "puertas traseras" algunas funciones fuera de la clase)
- Esto también aumenta la flexibilidad de la interfaz pública de la clase.
- Pero debe tenerse en cuenta que los amigos destruyen la operatividad general de la clase y también destruyen la encapsulación de la clase.
- Así que tenemos que elegir usar amigos.
✨¿Cuáles son las categorías de Amigos?
Clasificación:
- clase amiga
- funcion amigo
友元关系可以是一个函数,该函数被称为友元函数。
友元也可以是一个类,该类被称为友元类。
✨如何创建和使用友元?
关键字:frend
我们需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend
下面着重看看友元类以及友元函数!
3️⃣友元类
首先我们定义一个类:
这个myBuilding
类就相当于我的家,现在定义另一个类,是我的朋友类
并且我的朋友想访问我家的客厅和卧室
很显然,不可访问!
这是因为,在
myBuilding
这个类中,我的卧室是一个私有的,外部无法访问。但是如果我们在
myBuilding
类中声明myFriend
这个类是友元关系的,即friend class myFriend;
那么此时
myFriend
这个类就是一个友元类,它可以访问类似私有成员。
所以完整代码如下:
运行结果为:
朋友在访问:我的客厅
朋友在访问:我的卧室
复制代码
4️⃣友元函数
一旦我们将一个类声明为另一个类的友元,就意味着这个类的所有成员函数都是另一个类的友元函数,即都可以访问另一个类中私有成员或保护成员。
但有时候我们并不想让类的所有成员都能访问另一个类的私有成员,那么此时我们可以将类的部分成员函数声明为友元函数,这样就只有友元函数可以访问另一个类的私有成员, 而不是整个类都能访问另一个类的私有成员。
因此总结的说,友元函数就是能够访问另一个类的私有成员的一个函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样。
Por ejemplo, en myBuilding
esta clase, declaramos que visit1
es una función amiga, por lo que visit1
podemos acceder a myBuilding
los miembros privados .m_BedRoom
Y en la myFriend
clase, visit2
es imposible myBuilding
acceder a los miembros privados en
Entonces, en la función principal, algo como esto:
5️⃣Escribir al final
Bueno, después de leer este artículo, creo que has entendido la relación entre amigos, ¡bienvenido al área de comentarios para discutir juntos!