SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: gongomgra en Martes 4 de Diciembre de 2012, 00:45

Título: Duda con sentencia de constructor C++
Publicado por: gongomgra en Martes 4 de Diciembre de 2012, 00:45
Hola a todos,

hace poco que he empezado a leer sobre programación en C++ y me ha surgido una duda con un código que he visto en un libro. Es la primera vez que viene esta construcción y por desgracia no viene explicada.

En el siguiente código,
Código: C++
  1. class S
  2. {
  3. int x;
  4.  
  5. public:
  6. int getValue() { return x; }
  7. void setValue(int temp) { x = temp; }
  8. S(int temp) : x(temp) {}
  9. ~S() {}
  10. };
  11.  

¿cuál es el significado de la línea 8?

Código: [Seleccionar]
S(int temp) : x(temp){}

Muchas gracias de antemano,
gongomgra
Título: Re:Duda con sentencia de constructor C++
Publicado por: ProfesorX en Martes 4 de Diciembre de 2012, 01:22
Hola gongomgra bienfvenido al foro.

Es facil

S es el nombre del metodo costructor de tu clase

x(temp) es una manera abreviada de asignar los valores de los parametros del constructor a la variable miembro x.

Mas claro, seria equivalente a poner:

Código: [Seleccionar]
    S(int temp) {x = temp;}

Saludos :)
Título: Re:Duda con sentencia de constructor C++
Publicado por: gongomgra en Martes 4 de Diciembre de 2012, 13:17
Hola ProfesorX, muchas gracias por la bienvenida y la ayuda.

Discúlpeme, pero sigo sin entender por qué aparece la asignación tras los dos puntos (:) y no en el cuerpo del método (entre los corchetes).

Gracias,
gongomgra
Título: Re:Duda con sentencia de constructor C++
Publicado por: ProfesorX en Martes 4 de Diciembre de 2012, 17:04
Hola ProfesorX, muchas gracias por la bienvenida y la ayuda.

Discúlpeme, pero sigo sin entender por qué aparece la asignación tras los dos puntos (:) y no en el cuerpo del método (entre los corchetes).

Gracias,
gongomgra

Como te dije, es una abreviacion, es otro metodo de escribirlo, otra sintaxis, realmente no hay mucho que entender fuera de eso.

Es como si me preguntaras que por que escribimos x++ en lugar de x = x + 1.

Si no te gusta la abreviacion puedes escribirlo de manera completa, nada te lo impide, para que tengas mayor claridad, pero si lo encuentas en codigo hecho por otras personas, por lo menos ya sabes que es equivalente ;)

Saludos :)
Título: Re:Duda con sentencia de constructor C++
Publicado por: gongomgra en Miércoles 5 de Diciembre de 2012, 18:34
He vuelto a leer su respuesta con más tranquilidad y ya la entiendo. Muchísimas gracias.