Sdílet prostřednictvím


Konvence knihovny C++

Knihovna jazyka C++ dodržuje mnohem stejné konvence jako standardní knihovna jazyka C, a navíc je zde uvedeno několik dalších informací.

Implementace má určitou zeměpisnou šířku, jak deklaruje typy a funkce v knihovně C++:

  • Názvy funkcí v knihovně Standard C mohou mít externí propojení C++nebo extern "C". Místo deklarace entity knihovny zahrňte odpovídající standardní hlavičku jazyka C.

  • Název členské funkce ve třídě knihovny může obsahovat další podpisy funkcí uvedené v tomto dokumentu. Můžete si být jistí, že se zde popsané volání funkce chová podle očekávání, ale nemůžete spolehlivě převzít adresu členské funkce knihovny. (Typ nemusí být očekávaný.)

  • Třída knihovny může mít nezdokumentované (nevirtuální) základní třídy. Třída zdokumentovaná jako odvozená z jiné třídy může být ve skutečnosti odvozena z této třídy prostřednictvím jiných nezdokumentovaných tříd.

  • Typ definovaný jako synonymum pro určitý celočíselný typ může být stejný jako jeden z několika různých celočíselných typů.

  • Typ bitové masky lze implementovat buď jako celočíselného typu, nebo jako výčet. V obou případech můžete provádět bitové operace (například AND a OR) s hodnotami stejného typu masky bitů. Prvky A a B typ bitové masky jsou nenulové hodnoty, které jsou nulové, takže A & B je nula.

  • Funkce knihovny, která nemá žádnou specifikaci výjimky, může vyvolat libovolnou výjimku, pokud její definice jasně neomezuje takovou možnost.

Na druhou stranu platí určitá omezení:

  • Standardní knihovna jazyka C nepoužívá žádná makra maskování. Vyhrazeny jsou pouze konkrétní podpisy funkcí, nikoli názvy samotných funkcí.

  • Název funkce knihovny mimo třídu nebude obsahovat další, bezdokumentované podpisy funkce. Můžete spolehlivě převzít jeho adresu.

  • Základní třídy a členské funkce popsané jako virtuální jsou ujištěné virtuální, zatímco ty, které jsou popsány jako nevirtuální, jsou ujištěné nevirtuální.

  • Dva typy definované knihovnou jazyka C++ se vždy liší, pokud tento dokument výslovně nenavrhuje jinak.

  • Funkce poskytované knihovnou, včetně výchozích verzí nahraditelných funkcí, můžou vyvolat maximálně tyto výjimky uvedené v jakékoli specifikaci výjimky. Žádné destruktory zadané knihovnou nevyvolají výjimky. Funkce ve standardní knihovně jazyka C mohou rozšířit výjimku, jako když qsort volá funkci porovnání, která vyvolá výjimku, ale jinak nevyvolají výjimky.

Viz také

Standardní knihovna C++ – přehled
Bezpečný přístup z více vláken ve standardní knihovně C++