Un objeto embebido en otro objeto
Un objeto puede contener como atributo un objeto de otra clase:
#include
class mail_info {
int shipper;
int postage;
public:
void set(int in_class, int in_postage)
{shipper = in_class; postage = in_postage; }
int get_postage(void) {return postage;}
};
class box {
int length;
int width;
mail_info label;
public:
void set(int l, int w, int s, int p) {
length = l;
width = w;
label.set(s, p); }
int get_area(void) {return length * width;}
};
main()
{
box small, medium, large;
small.set(2, 4, 1, 35);
medium.set(5, 6, 2, 72);
large.set(8, 10, 4, 98);
cout << "The area is " << small.get_area() << "\n";
cout << "The area is " << medium.get_area() << "\n";
cout << "The area is " << large.get_area() << "\n";
}
// Result of Execution
//
// The area is 8
// The area is 30
// The area is 80
Este ejemplo contiene una clase llamada box que contiene un objeto de otra clase, la clase
mail_info, como atributo privado.
En este caso, el objeto de la clase mail_info se
utiliza internamente en la clase box. La función label.set() inicializa las variables.
No hay objetos de la clase mail_info declarados directamente en la clase principal. Se declaran
cuando se declaran los objetos de la clase box. Naturalmente, se podrían declarar y usar
objetos de esta clase en el programa principal.
Si la clase box y la clase embebida en ella necesitasen listas de parámetros para sus
respectivos constructores, se da una lista de inicialización.