Varios

Solo disponible en BuenasTareas
  • Páginas : 7 (1690 palabras )
  • Descarga(s) : 0
  • Publicado : 2 de diciembre de 2010
Leer documento completo
Vista previa del texto
POO
P M T e m a

2004

Introducción a la POO en C++ Algunas diferencias entre C y C++ Objetos, métodos, encapsulado.

2

Clases Métodos Constructores y Destructores Sobrecarga Amigos Entrada y salida en C++ Espacios de nombres Miembros estáticos
PM. 2. POO (1)

Características de la POO en C++
Respecto a la POO, las características más importantes de C++ son:

• • • • • •Herencia múltiple Sobrecarga de operadores y funciones Derivación Funciones virtuales Plantillas Gestión de excepciones
PM. 2. POO (2)

Pequeñas diferencias C-C++ (1) Argumentos con valor por defecto
int a(int a=1, int b=2, int c)
a(4,5) ??

NO

int a(int c, int a=1, int b=2)
hace que a(1), ó a(1,2) ó a(1,2,3) no sean ambiguos

PM. 2. POO (3)

Pequeñas diferencias C-C++ (2)
Funcionesinline frente a macros de preprocesador supongamos definido
#define cuadrado(x) (x*x) entonces void f(double d, int i) { r = cuadrado(d); // va bien r = cuadrado(i++); // va mal: significa (i++*i++); r = cuadrado(d+1); // va mal: significa (d+1*d+1); // que es, (d+d+1);

iría mejor
#define cuadrado(x) ((x)*(x)) // va mejor

PM. 2. POO (4)

Pequeñas difs. C-C++: funciones inline Pero siguesin resolver cuadrado(i++) Así que C++ aporta una solución: inline int icuadrado(int x) { return x * x; }
que expande C++ (no el procesador), sí resuelve el problema:

es como una función normal pero que se expande entre las líneas del código que la llama
PM. 2. POO (5)

Pequeñas difs. C-C++: funciones inline
La ventaja de las funciones inline es que no retrasan con llamadas a función. Sonexpresiones que se repinten en el código y no se quieren convertir en función para no recargar el número de llamadas a función.

icuadrado(i++) // va bien

PM. 2. POO (6)

C no tiene parámetros por referencia C
void swap(int *pa, int *pb) { int t = *pa; *pa=*pb; *pb=t; } main() { swap(&x, &y);}

C++
void swap(int & a, int & b) { int t = a; a=b; b=t; } main() { swap(x, y);}

Elmodificador & en los parámetros formales en C++ indica que ese parámetro es pasado por referencia. Algo que en C es imposible. En C no existía el paso por referencia, había que pasar la dirección (operador &) de la variable.
PM. 2. POO (7)

Operadores new y delete
int *pint, *parr; pint = new int; parr = new int[10] // … delete pint; delete[] parr;
Son operadores y por lo tanto el compiladorinterviene "inteligentemente" decidiendo el tipo de solicitud de memoria dinámica y el tamaño necesitado. Esto es más adecuado en la creación de objetos
PM. 2. POO (8)

Operadores new y delete, ventajas • No hace falta calcular los tamaños con sizeof():
pa = new int; // malloc(sizeof(int))

• El propio delete se encarga de poner a 0 (NULL) el puntero y new de poner a 0 la memoria adquirida
deletepint; // deja 0 modificando pint

// antes era: free(pint); pint=NULL;
PM. 2. POO (9)

Equivalencia entre new y malloc

truco en C #define NEW(X) (X *) malloc(sizeof(X)) pa = NEW(X); equivale en C++ a pa = new X;

PM. 2. POO (10)

Classes

• La mayor diferencia entre C y C++ está en soporte que este último ofrece para las clases • El nombre original de C++ era "C with Classes" •Esencialmente una clase es un tipo abstracto de datos (TAD): colección de datos junto a operadores
para acceder y modificarlos

PM. 2. POO (11)

Clases, uso Se puede definir una clase "Complejo" y variables de tipo Complejo: Complejo c1, c2, c3; y entonces seguir operando no sólo con funciones sino también con operadores: c3 = c1 / c2; c3 = c1 + c2; c3++;… en la que "/", "+", "++" se hansobredefinido para operar con Complejo.
PM. 2. POO (12)

Clases, declaración La declaración es muy parecida a la declaración de estructuras, de la que son extensión: class Complejo { float parteReal; float parteImaginaria; };

PM. 2. POO (13)

Clases, declaración La declaración es muy parecida a la declaración de estructuras, de la que son extensión: class Complejo { float parteReal; float...
tracking img