Duda Constructores C++

Iniciado por mayistik, 4 Febrero 2014, 18:02 PM

0 Miembros y 1 Visitante están viendo este tema.

mayistik

Saludos X)...

Compa~neros tengo una duda.... cuando uso un constructor para inicializar un objeto, los datos del parametro del objeto se guardan en el dato miembro de la clase... y si es asi, que pasa cuando creo mas de un objeto y lo inicializo tambien, tambien se guarda el valor inicial en el dato miembro ... osea el dato miembro guarda 2 valores al tiempo? Ejm:

// Este programa desarrolla el ejercicio de la figura 3.7 CAPITULO 3

#include <iostream>
#include <string>

using namespace std;

class LibroCalificaciones
{
public:
   //Constructor
   LibroCalificaciones (string nombre){

      nombreCurso = nombre;
   };

   //Funcion para obtener el nombre del curso;
   string obtenerNombreCurso (){

      return nombreCurso;
   };

private:
   //Dato miembro
   string nombreCurso;

};

int main (){

   LibroCalificaciones oLibroCalificaciones1 ("valor string numero 1");
   LibroCalificaciones oLibroCalificaciones2 ("valor string numero 2");

   cout << "oLibroCalificaciones1 se creo para el curso \n" << oLibroCalificaciones1.obtenerNombreCurso();

   cout << "oLibroCalificaciones2 se creo para el curso \n" << oLibroCalificaciones2.obtenerNombreCurso();

   cout << "Quiero mostrar el valor dato miembro para el objeto oLibroCalificaciones1 de nuevo" << oLibroCalificaciones1.obtenerNombreCurso();


   return 0;
}


en este caso el dato miembro ---> (nombreCurso) tendria asignado dos valores... (valor string numero 1) y (valor string numero 2) ? GRACIAS DE ANTEMANO

El Benjo

No, tú lo estás viendo como si la clase en si misma fuera un objeto y esto no es así. Lo que ocurre cuando creas un objeto es que creas un objeto con las propiedades y métodos de la clase. Vamos, que la clase en sí sólo es una plantilla para los objetos que crearás después; la clase no se altera modifica para nada cuando asignas valores ni cuando creas objetos de dicha clase.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

mayistik

Gracias por la respuesta... tienes razon, ahora lo veo  ;-), pero entonces los parametros que envio al crear el objeto, donde se guardan ? :(

El Benjo

Se guardan en una variable del tipo de ese objeto. Es decir que cuando tú creas el objeto se asigna memoria suficiente para guardar las variables que corresponden a las que tú declaras en el objeto. Si por ejemplo tu clase fuera así:

class LibroCalificaciones
{
int Numero1
int Numero2
int Numero3
}


Entonces cuando tú creas un nuevo objeto de esa clase se reserva memoria para tres variables de tipo "int".

El la siguiente imagen se ilustra una clase que se llama "Contacto" y se crean tres objetos de ese tipo. Ahí puedes ver como cada objeto guarda sus propios valores.

Editado: No te había adjuntado la imagen. XD
http://zilargi.files.wordpress.com/2009/12/cuadradino1.png?w=300
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

mayistik

Ya entiendo  ;-)... Mil Gracias  bro...

Yoel Alejandro

Escucha, no, no se sobrescriben los valores (los diseñadores del lenguaje C++ no fueron tan tontos, jeje  :rolleyes:)

Cada objeto o "instancia" de una clase tiene su espacio privado de variables, es decir, su porción específica e INDIVIDUAL de memoria asignada a sí mismo dentro del programa. Si creas dos objetos:


LibroCalificaciones oLibroCalificaciones1 (string_1);
LibroCalificaciones oLibroCalificaciones2 (string_2);


pues cada uno tiene su propia variable nombreCurso, independiente de la del otro objeto. Puede asignar un valor al nombreCurso del primer objeto, y otro valor al nombreCurso del segundo objeto, sin ningún problema.

Espero haberte aclarado .... :)
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)

mayistik

Si amigo... mas que claro  ;D Gracias