elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Consulta) Sobre la sobrecarga del operador &
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Sobre la sobrecarga del operador &  (Leído 1,577 veces)
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
(Consulta) Sobre la sobrecarga del operador &
« en: 31 Julio 2016, 02:10 am »

Hola, muy buenas. Estoy mirando un poco sobre C++, aunque esté centrado en C, por diversión, cuando de repente me fijé en que se podría sobrecargar el operador de & (operador para sacar la dirección de una variable/objeto). Entonces, la duda es, si una clase tiene sobrecargada el operador &, ¿cómo puedo sacar la dirección de esa clase? La única manera que se me ocurre es hacer un método que retorne 'this', pero debería haber otra manera, ¿no?

Código de ejemplo:
Código
  1. #include <iostream>
  2.  
  3. class Foo {
  4. public:
  5. int operator &();
  6. };
  7.  
  8. int main() {
  9. Foo foo;
  10.  
  11. std::cout << &foo << std::endl;
  12.  
  13. return 0;
  14. }
  15.  
  16. int Foo::operator &() {
  17. return 5;
  18. }

La salida, efectivamente será:
Código:
5

Muchas gracias


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: (Consulta) Sobre la sobrecarga del operador &
« Respuesta #1 en: 31 Julio 2016, 04:57 am »

El operador & es un operador que solo se debería sobrecargar si es estrictamente necesario. Y si se hace, lo normal es retornar una direcicón.
Puede usarse para saber si se está accediendo a la dirección, o para pasar una dirección de un campo interno, por ejemplo. Pero vamos, que retornar un int u otro objeto es muy poco deseable.

En cualquier caso, es una funcionalidad más. Cada programador le dará el uso que quiera.

A tu pregunta: Cómo obtener la dirección. En vez de sobrecargar el operador & y hacer un getter d ela dirección, haz lo contrario. No sobercargues el operador, y haz una función que retorne el 5.


En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Sobre la sobrecarga del operador &
« Respuesta #2 en: 31 Julio 2016, 05:06 am »

Jaja, eso lo sabía. Lo preguntaba por si algún día me encontraba en la situación de que una librería sobrecargó ese operador, y entonces no pudiera obtener la dirección de memoria del objeto. Pero por lo que veo por tu respuesta, no hay manera... Una lástima :P

Gracias por tu respuesta!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: (Consulta) Sobre la sobrecarga del operador &
« Respuesta #3 en: 31 Julio 2016, 13:53 pm »

Hola, sí se puede, pero sobrecargar el operador & para tal fin puede llevar a muchas confusiones. En la cabecera <memory> tienes la función genérica addressof (se agregó en C++11 para solucionar el problema que comentáis), que funciona de la misma manera que el operador unario &.

Te dejo la referencia http://en.cppreference.com/w/cpp/memory/addressof
« Última modificación: 31 Julio 2016, 13:56 pm por avesudra » En línea

Regístrate en
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Sobre la sobrecarga del operador &
« Respuesta #4 en: 31 Julio 2016, 18:39 pm »

Ah, vale. Me parecía extraño que no se pudiera sacar la dirección de otra forma. ¡Muchas gracias!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con sobrecarga de operador ( )
Programación C/C++
Akai 6 3,449 Último mensaje 16 Noviembre 2010, 14:53 pm
por Akai
sobrecarga de operador<<
Programación C/C++
adam96 5 3,249 Último mensaje 17 Diciembre 2010, 19:10 pm
por Littlehorse
Problema con la sobrecarga del operador <<
Programación C/C++
Lord_Lobotomi 2 1,458 Último mensaje 5 Diciembre 2011, 19:36 pm
por Lord_Lobotomi
[?] Necesito ayuda con sobrecarga de operador +=
Programación C/C++
solinac 1 981 Último mensaje 25 Noviembre 2013, 20:57 pm
por do-while
Sobrecarga operador +
Programación C/C++
_Enko 4 1,447 Último mensaje 6 Febrero 2015, 14:56 pm
por _Enko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines