Mam poniżej kod, działający w 32-bitowych oknach, visual-studio.Dlaczego zmienna referencyjna w klasie zawsze pobiera 4 bajty niezależnie od typu? (w systemie 32-bitowym)
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;
}
wyjściowa wynosi:
sizeof Test<int> : 4
sizeof Test<double> : 4
sizeof Test<char> : 4
Kompilator daje 4 bajty dla odniesienia zmiennej wewnątrz klasy irrespect typu odniesienia. Wartości zmiennej nie można zapisać w tych 4 bajtach.
Jaki kompilator informacji będzie przechowywany w tych 4 bajtach?
czy wewnętrznie przechowuje adres referencyjny? aby referencje i odniesienia mogły pisać w tej samej lokalizacji, aby były ze sobą zsynchronizowane.
Czy przechowuje nazwę odniesienia w tabeli symboli?
Zgadza się. OP może spróbować zmienić na 64-bitowy, aby zobaczyć różnicę. –