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.
Free Web Hosting