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();
}
 

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();
}

.

Preguntas similares