Udostępnij za pośrednictwem


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 pragma

  • Przy użyciu słów kluczowych __single_inheritancedziedziczenia , __multiple_inheritancei __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_inheritancei __virtual_inheritance chyba że określono opcję/Zakompilatora (Wyłącz rozszerzenia języka)._multiple_inheritance

END Microsoft Specific

Zobacz też

Słowa kluczowe