Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





cosillas de las clases (de C++ me refiero :P )

Iniciado por Zeigon, 20 de Enero de 2003, 07:51:24 PM

« anterior - próximo »

Zeigon

                                teniendo clase base y una derivada:



//clase base

class persona {

public:

  persona(char *n) {strcpy(nombre, n); }

...

protected:

  char nombre[30];

...

};



//clase derivada

class estudiante : public persona {

public:

  estudiante(char *n) : persona(n) {}

};



main() {

  estudiante yo ("Zeigon");

}



//ejemplo cogido de un libro de C++



la pregunta es: pq tengo q recibir la variable en un puntero, con recibirla en 'n' a secas, sin el * , no bastaría??

saludetes                                
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

CoLSoN2

                                hmm. entonces pasarías un caráceter, no una cadena de carácteres.
Como sabrás, en C hay una cierta similitud entre arrays y punteros, por eso mismo una cadena de carácteres puede identificarse con un puntero a char. Si pasas n solamente, pasarás solo 1 carácter.                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Juan Mellado

No, no bastaría con pasarla como 'char' a secas. Son cosas distintas.

'char' indica que el tipo de la variable es un caracter.
'char *' indica que el tipo de la variable es un puntero a un caracter.

Por decirlo de una forma simple: en una variable de tipo 'char' el valor de la variable es el caracter propiamente dicho (como 'A', 'B', ...), y con una variable de tipo 'char *' el valor de la variable es una dirección de  memoria en la que se encuentra una secuencia de caracteres (como "Juan", "Pepe", ...).

Por eso, si quieres inicializar el atributo nombre de la clase con "Zeigon" debes pasar un 'char *', porque lo que pasas NO es un único carácter, SINO la dirección de memoria en la que se encuentra la cadena "Zeigon".

Espero te ayude.
Saludos.


Nota (por si acaso): En C/C++ las cadenas de caracteres tratadas con funciones como strcpy() utilizan un 0 para indicar fin de cadena. Esto es, puedes reservar 30 bytes de memoria e inicializarla con "Pepe", con lo que sólo utilizas 4 bytes, y el quinto caracter se pone a 0.

Juan Mellado

                                oops! se me adelantaron mientras escribía  :D                                

Grugnorr

                                Mejor usar std:string...                                
hat the hells!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.