#include <iostream>

struct base {
   double x;
};

struct derivado : base {
   double y;
};

int main( ) {
   derivado d;
   d.x = 5;
   d.y = 7;

   base& r = d;                  // ok: la primera parte del objeto derivado tiene la misma estructura que la de un objeto de tipo base
   std::cout << r.x << "\n";     // ok: r sabe dónde está el double x en el objeto
   std::cout << r.y << "\n";     // error: r (que es base&) sólo sabe de la existencia de x, no de y
}
