Cátedra: Veiga
Fecha: 1er Cuatrimestre 2003
Día: Julio 2003
Tema: 3
1) A continuación se define un puntero a una función. Escriba la función a la que hace referencia suponiendo que la misma implementa la “resta de números reales”.
float (*p)( float a,float *b);
2) ¿Es correcta la implementación de la siguiente función “Delta” ? Justifique
int *Delta(int a, int b) { int c; c = a-b; return &c; }
3) Diagrame el proceso de transformación de un programa C a código máquina. Rotule claramente las entradas, salidas y procesos.
4) Escriba el prototipo de la clase X (que aloca memoria dinámica de tamaño variable) de forma que el siguiente código sea correcto:
X x[10]; x[1]=x[7].operator=(x[3]+*(x+5));
5) Un operador multiplicación típico se define como: C C::operator*(const C &c). Explique la semántica de la declaración. ¿qué consecuencias tendría sacar el const? ¿podría declarase como C C::operator*(C c)? Justifique y en caso de ser posible de ventajas e inconvenientes.
6) ¿Por qué cree Ud. que la función CreateThread no acepta como método de implementación un método de una clase?
7) ¿Qué es un Sitio Virtual (virtual host)?¿Para que sirve?¿Como sabe un servidor HTTP que se está haciendo referencia a uno en particular?
8) Escriba las declaraciones de una biblioteca basada en templates que ofrece una lista doblemente enlazada.
9) Escriba los tags que constituyen la estructura básica de un documento HTML. De un ejemplo.
10) ¿qué cree Ud. que podría suceder si un CGI le pasa un CONTENT-LENGTH inferior al correcto a un servidor HTTP?
5)
C C::operator*(const C &c)
Se define al operador producto de la clase C (C::) que recibe como parámetro un objeto de la clase C por referencia (C & c) que no será modificado en el método (const) y devuelve por valor un objeto de la clase C.
En caso de sacar el modificador const del parámetro se corre el riesgo de modificar por error el estado del parámetro que pasa como referencia, en cambio si con este modificador el compilador se encarga de validar que no se modifique al parámetro con la ejecución del método. En caso de declarar al operador como C C::operator*(C c) (es decir que el parámetro pase por valor) no se correría el riesgo de modificar al objeto original que se pasa por parámetro ya que al pasar por valor se esta creando una copia y al terminar de ejecutar el método esta es destruida, como desventaja se tiene que se estará creando y destruyendo un objeto mas con la ejecución del método.
6) La función CreateThread recibe como parámetro un puntero a una función que recibe un puntero a void como único parámetro, un método de una clase nunca puede ser pasado como parámetro porque este siempre recibe de forma implícita un puntero a this.