Udostępnij za pośrednictwem


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 i OR) na wartościach tego samego typu maski bitowej. Elementy A i B typ maski bitowej są wartościami niezerowymi, takimi jak A i B 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++