Słowa kluczowe dziedziczenia
Specyficzne dla firmy Microsoft
class
class-name
class __single_inheritance
class-name
class __multiple_inheritance
class-name
class __virtual_inheritance
class-name
gdzie:
class-name
Nazwa deklarowanej klasy.
Język C++ umożliwia zadeklarowanie wskaźnika do składowej klasy przed definicją klasy. Przykład:
class S;
int S::*p;
W powyższym kodzie jest deklarowany jako p
wskaźnik do całkowitej składowej klasy S. class S
Jednak nie zdefiniowano jeszcze w tym kodzie; został on zadeklarowany tylko. Gdy kompilator napotka taki wskaźnik, musi stworzyć uogólnioną reprezentację wskaźnika. Rozmiar reprezentacji zależy od określonego modelu dziedziczenia. Istnieją trzy sposoby określania modelu dziedziczenia kompilatora:
W wierszu polecenia przy użyciu przełącznika
/vmg
Korzystanie z
pointers_to_members
pragmaPrzy użyciu słów kluczowych
__single_inheritance
dziedziczenia ,__multiple_inheritance
i__virtual_inheritance
. Technika ta kontroluje model dziedziczenia na podstawie klasy.Uwaga
Jeśli zawsze deklarowany jest wskaźnik do składowej klasy po zdefiniowaniu klasy, nie trzeba używać żadnej z tych opcji.
Jeśli zadeklarujesz wskaźnik do składowej klasy przed zdefiniowaną klasą, może negatywnie wpłynąć na rozmiar i szybkość wynikowego pliku wykonywalnego. Im bardziej złożone dziedziczenie używane przez klasę, tym większa liczba bajtów wymaganych do reprezentowania wskaźnika do składowej klasy. Ponadto większy kod wymagany do zinterpretowania wskaźnika. Dziedziczenie pojedyncze (lub nie) jest najmniej złożone, a dziedziczenie wirtualne jest najbardziej złożone. Wskaźniki do składowych zadeklarowanych przed zdefiniowaną klasą zawsze używają największej, najbardziej złożonej reprezentacji.
Jeśli powyższy przykład zmienimy na:
class __single_inheritance S;
int S::*p;
niezależnie od opcji wiersza polecenia lub pragmas, wskaźniki do elementów członkowskich będą używać najmniejszej class S
możliwej reprezentacji.
Uwaga
Taka sama wczesna reprezentacja wskaźnika składowej klasy powinna występować w każdej jednostce translacji, która deklaruje wskaźniki do składowych tej klasy, a deklaracja powinna występować przed deklaracją wskaźników do składowych.
Aby uzyskać zgodność z poprzednimi wersjami, _single_inheritance
, , i _virtual_inheritance
są synonimami dla __single_inheritance
, __multiple_inheritance
i __virtual_inheritance
chyba że określono opcję/Za
kompilatora (Wyłącz rozszerzenia języka)._multiple_inheritance
END Microsoft Specific
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla