4,38/5
(190 opiniones)
|20141 alumnos|Fecha publicación: 01/07/2004
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();
}
Hay 190 opiniones. Opina sobre este curso.
| 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] |
|
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] |
|
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] |
|
34.042 | ||
Publicar en
del.icio.us
digg
meneame