2013-04-13 17 views
7

Według ++ standard C:C++ layout Standard i Referencje

klasa średnia-układ jest klasa, która:

-has żadnych non-statyczne członkowie danych typu non-standardowego klasa układu (lub tablica takich typów) lub odwołanie.

Co własności (-e) odniesienia zapobiec zajęcia z członkami referencyjnych przed zawarte w definicji standardowej klasy układ?

+0

Czy sądzisz, że takie właściwości muszą istnieć? Nie musi być ... – Yakk

+0

"Zapobieganie" jest mocnym słowem. Z jednego punktu widzenia, odniesienia dają kompilatorowi dobrą wymówkę, aby traktować strukturę jako typ danych abstrakcyjnych, a nie. specyfikacja układu pamięci. Referencje w ogóle nie muszą mieć własnego *. – jthill

Odpowiedz

11

Standardowa klasa układu polega na posiadaniu dobrze zdefiniowanego układu dla określonego typu w pamięci. W C++ referencje nie są obiektami, więc nie mają żadnego magazynu, do którego można uzyskać dostęp w dobrze zdefiniowany sposób, za pomocą zgodnego programu, nawet jeśli implementacja będzie zwykle wymagać pewnego rodzaju pamięci specyficznej dla implementacji.

Z tego powodu nie ma sensu posiadanie elementów referencyjnych w elementach, które muszą mieć układ standardowy.

Jest nienormatywne uwaga w standardzie w sekcji o C++ modelu pamięci, który wspomina o tym:

[Uwaga: Różne funkcje języka, takie jak odniesień i funkcji wirtualnych, może obejmować dodatkowy lokalizacje pamięci, które nie są dostępne dla programów, ale są zarządzane przez implementację. -end note]

+0

Dzięki za wspaniałą odpowiedź: to ma sens. – TRISAbits