• Ir al contenido
  • Ir a la navegación
  • Ir al buscador
 
Infoudo
ING English
Directorio WAP para móvil, Tablet, iPhone o Smartphone

Centro de Noticias de la Universidad de Oriente

Categorías

 

Inicio  |  Contacto  |  Posts  |  TIENDA PUBLISHOP  |  Sobre nosotros  |  Registro y Planes  |  Pagos  |  Donaciones

Ver Código QR de esta página

Campaña #AyudemosaYuli  |  Campaña #AyudemosaStephany.  |  ¿Interesado(a) en cursos y resolución de ejercicios de materias prácticas? Para más información, contáctenos por: WhatsApp y Telegram: 04266836955. Únete al grupo: SISTEMAS (UDOMO).

[»] **Musica para tu celular


+ Buscar en InfoUDO

 

Puntero this

 

lunes julio 11, 2016

Hasta ahora no hemos nombrado un puntero especial que se pasa a todos los métodos llamado this.

Como sabemos podemos crear varios objetos de una clase. Cada objeto tiene una copia en memoria de todos los atributos (variables) que son independientes de los otros objetos. En el lenguaje C++ para poder identificar a que objeto en particular estamos accediendo cuando llamamos a un método se le pasa un parámetro llamado this (significa este objeto)

Veamos con un ejemplo donde aparece este puntero:

#include<iostream>

using namespace std;

class Temperatura {
    int minima;
    int maxima;
    int actual;
    void imprimir();
public:
    Temperatura(int min, int max, int actual);
};

Temperatura::Temperatura(int min, int max, int act)
{
    this->minima = min;
    this->maxima = max;
    this->actual = act;
    this->imprimir();
}

void Temperatura::imprimir()
{
    cout << this->minima << " " << this->actual << " " << this->maxima << "";
}

void main()
{
    Temperatura temperatura1(10, 20, 15);
    Temperatura temperatura2(25, 35, 29);
    cin.get();
}

Podemos ver que cada vez que accedemos a un atributo o llamamos en un método dentro de la clase le antecedemos el puntero this.

Este puntero almacena la dirección de memoria donde se guardan los atributos del objeto respectivo, por ejemplo cuando en la main creamos un objeto de la clase Temperatura:

    Temperatura temperatura1(10, 20, 15);

Al constructor ademán de pasar los tres enteros 10, 20 y 15 se le pasa un cuarto parámetro que es la dirección de memoria donde se almacenan los atributos del objeto "temperatura1".

Luego dentro del constructor cuando escribimos:

    this->minima = min;
    this->maxima = max;
    this->actual = act;

Cuando se ejecuta este código this tiene la dirección del objeto temperatura1 o temperatura2 según el caso.

También cuando llamamos a un método dentro de la clase estamos antecediendo el puntero this para saber de cual objeto se trata:

    this->imprimir();

Pero ¿porqué no lo hemos estado haciendo hasta ahora? Es que no es obligatorio anteceder a los nombres de atributos y métodos, pero en realidad la dirección de los atributos de cada objeto en C++ se resuelve mediante este puntero.

Ya veremos casos en conceptos sucesivos donde es muy importante utilizar este puntero this explícitamente.

Un caso muy sencillo donde debemos utilizar el puntero this obligatorio es cuando un método tiene parámetros con el mismo nombre que los atributos de la clase.

Problema:

Crear una clase llamada Temperatura que permita inicializar la temperatura mínima, máxima y actual. Definir en el constructor los nombres de los parámetros iguales a los atributos.

Programa:

#include<iostream>

using namespace std;

class Temperatura {
    int minima;
    int maxima;
    int actual;
    void imprimir();
public:
    Temperatura(int min, int max, int actual);
};

Temperatura::Temperatura(int minima, int maxima, int actual)
{
    this->minima = minima;
    this->maxima = maxima;
    this->actual = actual;
    imprimir();
}

void Temperatura::imprimir()
{
    cout << minima << " " << actual << " " << maxima << "";
}

void main()
{
    Temperatura temperatura1(10, 20, 15);
    Temperatura temperatura2(25, 35, 29);
    cin.get();
}

Este proyecto lo puede descargar en un zip desde este enlace :

Punterothis1.zip

Como podemos observar en este caso si tenemos que hacer uso al puntero this para hacer referencia a los atributos del objeto y diferenciarlos de los parámetros (cuando llamamos al método imprimir no hace falta anteceder el puntero this, es tácito):

Temperatura::Temperatura(int minima, int maxima, int actual)
{
    this->minima = minima;
    this->maxima = maxima;
    this->actual = actual;
    imprimir();
}
— @INFOUDO.OFICIAL

— Síguenos en Facebook@INFOUDO.OFICIAL

Categorías: #C++, #


[0] Atrás | Directorio
« Inicio
[»] Las mejores Apps para tu celular
[»] Imágenes Gratis

Comentarios

Ayuda
 

COMPÁRTELO:


Me Gusta :)Facebook Tuiteame :)Twitter .WhatsApp .Telegram . LinkedIn

También te puede interesar:

NOCIONES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Material de Apoyo del Curso de Programación - Lenguaje C++ - Periodo (Feb - May) del año en curso
Parámetros por valor y por referencia de objetos
Parámetros por valor y por referencia de datos simples
Métodos constantes (const)
Parámetros de un método constante (const)
Definición de constantes (const)
Directiva #define
Métodos estáticos de una clase
Atributos estáticos de una clase


« Métodos estáticos de una clase  |  Directiva #define »
 
Apps Infoudo
 
Buscador:
Powered by Google:


Web móvil
Imágenes
La Web

 

Síguenos por RSS


Puedes leerlos mediante el navegador Firefox, lectores de noticias en la computadora o el móvil o usando el servicio de Feedburner de Google para recibir las notificaciones por correo electrónico.
RSS - Suscribirse usando Feedburner de Google

email Recibir las nuevas publicaciones de Infoudo por email

Atom


»Ir a URL
.....
Registra Gratis Tu Negocio
....
Sugerir un nuevo sitio WAP

...
¡Bloguea Ya!

..
Registro de Profesionales(Abogados, escritores, doctores, licenciados, ingenieros, etc.)
.
Soporte

Síguenos en las redes sociales

Síguenos en Facebook facebook.com/INFOUDO.OFICIAL Síguenos en Twitter @infoudomon Síguenos en Instagram @infoudooficial Síguenos en Telegram t.me/Infoudooficial
Síguenos en Facebook facebook.com/boludooficial Síguenos en Twitter @bolUDOoficial Síguenos en Instagram @boludooficial Síguenos en Telegram t.me/Boludooficial

Móvil: (0426 683 6955) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55


Copyscape
Volver arriba

Protocolo  |  Mapa del Sitio  |  Report Abuse - DMCA  |  Términos y Condiciones  |  Ayuda  |  Privacidad de Datos  |  Política de Cookies  |  Reportar un bug  |  Licencia: CC BY-NC-ND 3.0

Copyright ©2022 Infoudo. Todos los derechos reservados. Diseñado y Desarrollado por Sergio Alemán Mi perfil en GitHub


SUBIR