Clases y uniones

22/09/2004 - 20:13 por Amelia | Informe spam
No entiendo el concepto de union implementada como una
clase.

Mas abajo declado una union con sus propiedades, métodos
y constructores.

Luego en el main creo un objeto de dicha clase y todo
funciona, pero no comprendo porque.

¿Si todos los miembros de una union comparten la misma
dirección de memoria, como diablos es posible que se
mantengan los valores y pueda un método mostrar todas las
propiedades?

union Triangulo
{
int lado1;
int lado2;
int lado3;

Triangulo(int lado1, int lado2, int lado3)
{
this->lado1=lado1;
this->lado2=lado2;
this->lado3=lado3;
}

void informacion()
{
cout << "Triangulo " << lado1 << ", " <<
lado2 << ", " << lado3 << "";
}

void tipo()
{
if (lado1==lado2 && lado2==lado3)
cout << "Equilatero ";
else if (lado1==lado2 || lado2==lado3 ||
lado1==lado3)
cout << "Isosceles ";
else
cout << "Escaleno ";
}
};

void main()
{
int a=3, b=5;

cout << a << "+" << b << "=" << suma(a,b) << "";
multiplica(a,b);


Triangulo tri(3,1,3);
tri.informacion();
tri.tipo();
}

Preguntas similare

Leer las respuestas

#1 pablo crosio
22/09/2004 - 21:29 | Informe spam
hola!

por lo que se ve la salida debe mostrar

Triangulo 3, 3, 3
Equilatero

puesto que en la union queda almacenado el ultimo valor
asignado: 3

salu2!!

pablo

No entiendo el concepto de union implementada como una
clase.

Mas abajo declado una union con sus propiedades, métodos
y constructores.

Luego en el main creo un objeto de dicha clase y todo
funciona, pero no comprendo porque.

¿Si todos los miembros de una union comparten la misma
dirección de memoria, como diablos es posible que se
mantengan los valores y pueda un método mostrar todas las
propiedades?

union Triangulo
{
int lado1;
int lado2;
int lado3;

Triangulo(int lado1, int lado2, int lado3)
{
this->lado1=lado1;
this->lado2=lado2;
this->lado3=lado3;
}

void informacion()
{
cout << "Triangulo " << lado1 << ", " <<
lado2 << ", " << lado3 << "";
}

void tipo()
{
if (lado1==lado2 && lado2==lado3)
cout << "Equilatero ";
else if (lado1==lado2 || lado2==lado3 ||
lado1==lado3)
cout << "Isosceles ";
else
cout << "Escaleno ";
}
};

void main()
{
int a=3, b=5;

cout << a << "+" << b << "=" << suma(a,b) << "";
multiplica(a,b);


Triangulo tri(3,1,3);
tri.informacion();
tri.tipo();
}

.

Respuesta Responder a este mensaje
#2 Amelia
22/09/2004 - 22:30 | Informe spam
Tienes razón, no me había dado cuenta en la salida.

Entonces no comprendo para que sirve un constructor que
no puede guardar el valor de las tres propiedades.

No entiendo muy bien la utilidad de las uniones como
clases.

Muchas gracias
Amelia

hola!

por lo que se ve la salida debe mostrar

Triangulo 3, 3, 3
Equilatero

puesto que en la union queda almacenado el ultimo valor
asignado: 3

salu2!!

pablo

No entiendo el concepto de union implementada como una
clase.

Mas abajo declado una union con sus propiedades,




métodos
y constructores.

Luego en el main creo un objeto de dicha clase y todo
funciona, pero no comprendo porque.

¿Si todos los miembros de una union comparten la misma
dirección de memoria, como diablos es posible que se
mantengan los valores y pueda un método mostrar todas




las
propiedades?

union Triangulo
{
int lado1;
int lado2;
int lado3;

Triangulo(int lado1, int lado2, int lado3)
{
this->lado1=lado1;
this->lado2=lado2;
this->lado3=lado3;
}

void informacion()
{
cout << "Triangulo " << lado1 << ", " <<
lado2 << ", " << lado3 << "";
}

void tipo()
{
if (lado1==lado2 && lado2==lado3)
cout << "Equilatero ";
else if (lado1==lado2 || lado2==lado3 ||
lado1==lado3)
cout << "Isosceles ";
else
cout << "Escaleno ";
}
};

void main()
{
int a=3, b=5;

cout << a << "+" << b << "=" << suma(a,b) << "";
multiplica(a,b);


Triangulo tri(3,1,3);
tri.informacion();
tri.tipo();
}

.



.

Respuesta Responder a este mensaje
#3 pablo crosio
22/09/2004 - 23:06 | Informe spam
hola!

pues tienes toda la razon... no es de mucha utilidad...
pero nadie impone que el constructor DEBE ser asi... eso
lo decidiste tu simplemente el codigo compila pero no
hace lo que esperabas

las uniones pueden ser vistas como clases con algunas
limitaciones... por cualquier cosa podes consultar en el
help...

salu2!!

pablo



Tienes razón, no me había dado cuenta en la salida.

Entonces no comprendo para que sirve un constructor que
no puede guardar el valor de las tres propiedades.

No entiendo muy bien la utilidad de las uniones como
clases.

Muchas gracias
Amelia

hola!

por lo que se ve la salida debe mostrar

Triangulo 3, 3, 3
Equilatero

puesto que en la union queda almacenado el ultimo valor
asignado: 3

salu2!!

pablo

No entiendo el concepto de union implementada como una
clase.

Mas abajo declado una union con sus propiedades,




métodos
y constructores.

Luego en el main creo un objeto de dicha clase y todo
funciona, pero no comprendo porque.

¿Si todos los miembros de una union comparten la misma
dirección de memoria, como diablos es posible que se
mantengan los valores y pueda un método mostrar todas




las
propiedades?

union Triangulo
{
int lado1;
int lado2;
int lado3;

Triangulo(int lado1, int lado2, int lado3)
{
this->lado1=lado1;
this->lado2=lado2;
this->lado3=lado3;
}

void informacion()
{
cout << "Triangulo " << lado1 << ", " <<
lado2 << ", " << lado3 << "";
}

void tipo()
{
if (lado1==lado2 && lado2==lado3)
cout << "Equilatero ";
else if (lado1==lado2 || lado2==lado3 ||
lado1==lado3)
cout << "Isosceles ";
else
cout << "Escaleno ";
}
};

void main()
{
int a=3, b=5;

cout << a << "+" << b << "=" << suma(a,b) << "";
multiplica(a,b);


Triangulo tri(3,1,3);
tri.informacion();
tri.tipo();
}

.



.



.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida