3.201 cursos gratis
6.233.243 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > Lenguaje C++. Guía para Programadores > This, New y Delete

Lenguaje C++. Guía para Programadores

Autor: Fernando Guerrero Tala
Curso:  4,38/5 4,38/5 (190 opiniones) |20141 alumnos|Fecha publicación: 01/07/2004
Capítulos del curso

Capítulo 11:

 This, New y Delete

This es un puntero que se pasa automáticamente a cualquier miembro cuando se invoca. Es un puntero al objeto que genera la llamada, por tanto la función recibe automáticamente un puntero al objeto. A este puntero se referencia como this y solo se pasa a los miembros punteros this.
objeto.funcion(); // a la función recibe automáticamente el puntero this.

EJEMPLO: El primero  sin puntero this. El segundo utilizando el puntero this.

1.-
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
class stock{
      char item[20];
      double coste;
public:
      stock(char *i,double c)
      {
            strcpy(item,i);
            coste=c;
      }
      void muestra();
};

void stock::muestra()
{
      cout<<item << "\n";
      cout<<"PVP: " << coste;
}

void main()
{
      clrscr();
      stock obj("tuerca",5.94);
      obj.muestra();
      getch();
}

2.-
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
class stock{
      char item[20];
      double coste;
public:
      stock(char *i,double c)
      {
            strcpy(this->item,i);
            this->coste=c;
      }
      void muestra();
};

void stock::muestra()
{
      cout<<this->item << "\n";
      cout<<"PVP: " << this->coste;
}

void main()
{
      clrscr();
      stock obj("tuerca",5.94);
      obj.muestra();
      getch();
}

Hasta ahora si se necesitaba asignar memoria dinámica, se hacía con malloc y para liberar se utilizaba free. En C++ se puede asignar memoria utilizando new y liberarse mediante delete. Estas operadores no se pueden combinar unas con otras, es decir debe llamarse a delete solo con un puntero obtenido mediante new. Los objetos también se les puede pasar un valor inicial con la sentencia new.

SINTAXIS:
puntero=new tipo;
delete puntero;
puntero=new tipo(valor_inicial);

También se pueden crear arrays asignados dinámicamente, estos arrays pueden utilizar la sentencia new. La sintaxis general es:

DECLARACION DEL ARRAY:
puntero=new tipo[tamaño];

EJEMPLO:
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
class cosas{
     int i,j;
public:
     void obten(int a,int b){i=a;j=b;}
     int muestra(){return i*j;}
};
void main()
{
     clrscr();
     int *p_var;
     p_var=new int;
//p_var=new int(9); se asigna un valor inicial.
     cosas *p;
     p=new cosas;
     if(!p || !p_var)
     {
         cout<<"Error de asignacion\n";
         exit(1);
     }

     *p_var=1000;
     p->obten(4,5);
     cout<<"El entero en p_var es: " <<*p_var;
     cout<<"\nTotal: " <<p->muestra();
     getch();
}

EJEMPLO: Array asignado dinámicamente.

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main(void)
{
     int *p;
     int i;
     p=new int[5];
     clrscr();
     if(!p)
     {
         cout<<"Error de asignacion\n";
         exit(1);
     }
     for(i=0;i<5;i++)
         p[i]=i+1;
     for(i=0;i<5;i++)
     {
         cout<<"Este es el entero en p["<<i<<"]:";
         cout<<p[i]<<"\n";
     }
     delete[] p;
     getch();
}

Capítulo siguiente - Referencias
Capítulo anterior - Funciones Amigas
Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Hay 190 opiniones. Opina sobre este curso.

Descarga el PDF gratis

Cursos similares a Lenguaje C++. Guía para Programadores


Cursos Valoración Alumnos Vídeo
Algoritmos en QBASIC. Manual
Este manual de QBASIC es una colección linkografica y bibliográfica sobre el uso de QBASIC frente a la propuesta de solucionar los casos más comunes d... [26/10/09]
0/5 239  
PHP y MySQL. Aplicaciones Web: base de datos MySQL III (novena parte)
Programación de aplicaciones Web con PHP y MySQL Seguimos con el estudio de la base de datos MySQL. En esta ocasión te enseñaremos a importar y ex... [02/12/08]
4/5 508  
SQL
SQL (Structured Query Language) es un lenguaje de programación para acceder y manipular bases de datos. SQL surgió de un proyecto de IBM en el que investigaba e... [10/05/04]
 4,49/5 34.042  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail