Konwencje biblioteki C++
Biblioteka języka C++ przestrzega znacznie tych samych konwencji co Standardowa biblioteka C, a także kilka innych opisanych tutaj.
Implementacja ma pewną szerokość geograficzną w sposobie deklarowania typów i funkcji w bibliotece języka C++:
Nazwy funkcji w standardowej bibliotece C mogą mieć połączenie extern "C++" lub extern "C". Dołącz odpowiedni nagłówek standardowego języka C zamiast zadeklarować jednostkę biblioteki w tekście.
Nazwa funkcji składowej w klasie biblioteki może mieć dodatkowe podpisy funkcji dla tych wymienionych w tym dokumencie. Możesz mieć pewność, że wywołanie funkcji opisane tutaj działa zgodnie z oczekiwaniami, ale nie można niezawodnie pobrać adresu funkcji składowej biblioteki. (Typ może nie być oczekiwany).
Klasa biblioteki może mieć nieudokumentowane (niewirtualne) klasy bazowe. Klasa udokumentowana jako pochodna z innej klasy może w rzeczywistości pochodzić z tej klasy za pośrednictwem innych nieudokumentowanych klas.
Typ zdefiniowany jako synonim dla niektórych typów całkowitych może być taki sam jak jeden z kilku różnych typów całkowitych.
Typ maski bitowej można zaimplementować jako typ liczby całkowitej lub wyliczenie. W obu przypadkach można wykonywać operacje bitowe (takie jak
AND
iOR
) na wartościach tego samego typu maski bitowej. ElementyA
iB
typ maski bitowej są wartościami niezerowymi, takimi jakA
iB
zero.Funkcja biblioteki, która nie ma specyfikacji wyjątku, może zgłosić dowolny wyjątek, chyba że jej definicja wyraźnie ogranicza taką możliwość.
Z drugiej strony istnieją pewne ograniczenia:
Standardowa biblioteka C nie używa makr maskowania. Tylko określone sygnatury funkcji są zastrzeżone, a nie same nazwy funkcji.
Nazwa funkcji biblioteki poza klasą nie będzie zawierać dodatkowych, nieudokumentowanych podpisów funkcji. Możesz niezawodnie przyjąć jego adres.
Klasy bazowe i funkcje składowe opisane jako wirtualne są z pewnością wirtualne, podczas gdy te opisane jako niewirtualne są z pewnością niewirtualne.
Dwa typy zdefiniowane przez bibliotekę języka C++ są zawsze różne, chyba że ten dokument jawnie sugeruje inaczej.
Funkcje dostarczane przez bibliotekę, w tym domyślne wersje funkcji możliwych do zastąpienia, mogą zgłaszać w większości wyjątki wymienione w dowolnej specyfikacji wyjątku. Żadne destruktory dostarczone przez bibliotekę nie zgłaszają wyjątków. Funkcje w standardowej bibliotece C mogą propagować wyjątek, tak jak w przypadku
qsort
wywołania funkcji porównania, która zgłasza wyjątek, ale w przeciwnym razie nie zgłaszają wyjątków.
Zobacz też
Standardowa biblioteka C++ — przegląd
Bezpieczeństwo wątku w standardowej bibliotece C++