Jawne tworzenie wystąpienia
Możesz użyć jawnego wystąpienia, aby utworzyć wystąpienie klasy lub funkcji szablonu bez faktycznego użycia jej w kodzie. Ponieważ jest to przydatne podczas tworzenia plików biblioteki (.lib
), które używają szablonów do dystrybucji, nie są umieszczane w plikach obiektów (.obj
).
Przykłady
Ten kod jawnie tworzy wystąpienie MyStack
zmiennych int
i sześciu elementów:
template class MyStack<int, 6>;
Ta instrukcja tworzy wystąpienie MyStack
bez rezerwowania żadnego magazynu dla obiektu. Kod jest generowany dla wszystkich członków.
Następny wiersz jawnie tworzy wystąpienie tylko funkcji składowej konstruktora:
template MyStack<int, 6>::MyStack( void );
Możesz jawnie utworzyć wystąpienie szablonów funkcji przy użyciu określonego argumentu typu, aby je ponownie zadeklarować, jak pokazano w przykładzie w utworzeniu wystąpienia szablonu funkcji.
Możesz użyć słowa kluczowego extern
, aby zapobiec automatycznemu tworzeniu wystąpienia elementów członkowskich. Przykład:
extern template class MyStack<int, 6>;
Podobnie można oznaczyć określone elementy członkowskie jako zewnętrzne i nie są tworzone wystąpienia:
extern template MyStack<int, 6>::MyStack( void );
Za pomocą słowa kluczowego extern
kompilator może wygenerować ten sam kod wystąpienia w więcej niż jednym module obiektu. Należy utworzyć wystąpienie szablonu funkcji przy użyciu określonych jawnych parametrów szablonu w co najmniej jednym połączonym module, jeśli jest wywoływana funkcja. W przeciwnym razie podczas kompilatora zostanie wyświetlony błąd konsolidatora.
Uwaga
Słowo extern
kluczowe w specjalizacji dotyczy tylko funkcji składowych zdefiniowanych poza treścią klasy. Funkcje zdefiniowane wewnątrz deklaracji klasy są traktowane jako funkcje wbudowane i są zawsze tworzone wystąpienia.
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