12.174 cursos gratis
8.742.531 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Lenguaje C++. Guía para Programadores

Autor: Fernando Guerrero Tala
Curso:
8,76/10 (191 opiniones) |37692 alumnos|Fecha publicaciýn: 01/07/2004
Envýa un mensaje al autor

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

Nuestras novedades en tu e-mail

Escribe tu e-mail:



MailxMail tratarý tus datos para realizar acciones promocionales (výa email y/o telýfono).
En la polýtica de privacidad conocerýs tu derechos y gestionarýs la baja.

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



  • Výdeo
  • Alumnos
  • Valoraciýn
  • Cursos
1. Introducción al Lenguaje C
El lenguaje C apareció en 1972, en el diseño del sistema operativo UNIX. Este... [10/05/04]
73.701  
2. Guía de Comandos Rápidos de Linux
Linux es la principal expresión del software libre. Linux ofrece al usuario la... [14/06/04]
22.018  
3. Action Script 3. Lenguaje de programación
Action script 3 . Este curso de informática fue realizado especialmente para las... [04/05/11]
274
Curso con video

ýQuý es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail