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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  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,467 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,288 Último mensaje 16 Noviembre 2010, 14:53 pm
por Akai
sobrecarga de operador<<
Programación C/C++
adam96 5 3,088 Último mensaje 17 Diciembre 2010, 19:10 pm
por Littlehorse
Problema con la sobrecarga del operador <<
Programación C/C++
Lord_Lobotomi 2 1,370 Último mensaje 5 Diciembre 2011, 19:36 pm
por Lord_Lobotomi
[?] Necesito ayuda con sobrecarga de operador +=
Programación C/C++
solinac 1 889 Último mensaje 25 Noviembre 2013, 20:57 pm
por do-while
Sobrecarga operador +
Programación C/C++
_Enko 4 1,318 Último mensaje 6 Febrero 2015, 14:56 pm
por _Enko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines