Tengo el siguiente código, que se ejecuta en Windows de 32 bits, visual-studio.¿Por qué la variable de referencia dentro de la clase siempre toma 4 bytes independientemente del tipo? (en el sistema de 32 bits)
template <class T>
class Test
{
public:
T &ref;
Test(T &x)
:ref(x)
{}
};
int main()
{
cout<<"sizeof Test<int> : "<<sizeof(Test<int>)<<endl;
cout<<"sizeof Test<double> : "<<sizeof(Test<double>)<<endl;
cout<<"sizeof Test<char> : "<<sizeof(Test<char>)<<endl;
}
salida es:
sizeof Test<int> : 4
sizeof Test<double> : 4
sizeof Test<char> : 4
Compiler dando 4 bytes para la variable de referencia dentro irrespect clase del tipo de referencia. El valor de la variable no se puede almacenar en esos 4 bytes.
¿Qué compilador de información almacenará en esos 4 bytes?
¿está almacenando internamente la dirección del referente? para que la referencia y el referente puedan escribir en la misma ubicación para estar sincronizados entre sí.
¿O está almacenando el nombre del referente en la tabla de símbolos?
Así es. El OP podría intentar cambiar a 64 bits para ver la diferencia. –