Video: Bjarne Stroustrup Interview at CppCon 2018 2025
Standardní knihovna C ++ poskytuje úplnou sadu matematických, časových, vstupních / výstupních a DOS operací, abychom jmenovali jen několik. Mnoho raných programů, které se naučíte jako začátečníci, využívají takzvané funkce řetězců znaků definované v řetězcích obsahujících .
Typy argumentů pro mnoho z těchto funkcí jsou opraveny. Například oba argumenty pro strcpy (char *, char *) musí být ukazatelem řetězce znaků null-terminated - nic jiného nemá smysl.
Existují funkce, které jsou použitelné pro více typů. Zvažte příklad funkce lowly maximum (), která vrátí maximálně dva argumenty. Všechny následující varianty mají smysl:
int maximum (int n1, int n2); // vrátit max. dvě celá čísla nepodepsané maximum (nepodepsané u1, nepodepsané u2); dvojité maximum (dvojité d1, dvojité d2); char maximum (char c1, char c2);
Zde byste chtěli zavést maximum () pro všechny čtyři případy.
Samozřejmě můžete přetížit maximum () se všemi možnými verzemi:
dvojité maximum (dvojité d1, dvojité d2) {návrat (d1> d2)? d1: d2;} int maximální (int n1, int n2) {návrat (n1> n2)? n1: n2;} maximum char (char c1, char c2) {návrat (c1> c2)? c1: c2;} // … opakovat pro všechny ostatní číselné typy …
Tento přístup funguje. Nyní C ++ vybírá nejlepší reference, maximum (int, int) , pro odkaz, jako je maximální (1, 2) . Vytvoření stejné funkce pro každý typ proměnné je však velkou ztrátou času.
Zdrojový kód pro všechny maximální funkce (T, T) má stejný vzorec, kde T je jeden z číselných typů. Bylo by tak pohodlné, kdybyste jednou mohli zapsat funkci a nechat C ++ dodávat typ T podle potřeby při použití funkce. Ve skutečnosti vám C ++ umožňuje udělat přesně toto. Jsou nazývány definicemi šablon .
