Moderní Příručka programování v jazyce C++
C++ je jedním z nejrozšířenějším programovací jazyky na světě.Kvalitně C++ programů je rychlé a efektivní.Jazyk je flexibilnější než jiné jazyky, protože slouží k vytvoření široké spektrum apps – od zábavnými a vzrušujícími hrami k vysoce výkonných vědecké softwaru ovladače zařízení, vložené programy a aplikace klienta systému Windows.Více než 20 let C++ použil k řešení problémů, jako je tato a mnohá další.Co možná nevíte, je, že rostoucí počet C++ programátory mají složit dowdy programování C styl ze včerejšího dne a místo toho donned moderní C++.
Jedním z požadavků původního jazyka C++ byla zpětnou kompatibilitu s jazykem C.Od té doby C++ vyvinul přes několik iterací – C s třídami, pak původní specifikace jazyka C++ a potom mnoho dalších vylepšení.Z důvodu tohoto dědictví C++ se často nazývá multi-paradigm programovací jazyk.V jazyce C++ můžete provést čistě procesní C styl programování, které zahrnuje raw ukazatele, pole řetězců znaků ukončený znakem null, vlastní datové struktury a další funkce, které mohou povolit vysoký výkon, ale mohou také provést chyby a složitost.C-styl programování je fraught s perils podobné, a proto jedním z cílů zmínit jazyka C++ byla tak, aby programy zajišťující bezpečnost typů i snadněji zápisu, rozšíření a údržbu.Kterých je založena na, C++ Evropská paradigmata programování jako objektově orientovaného programování.V průběhu let byly přidány funkce jazyka, spolu s vysoce testován standardní knihovny datových struktur a algoritmů.Tyto dodatky provedené moderní stylu C++ možné je.
Moderní C++ zdůrazňuje:
Založené na zásobníku rozsahu haldy nebo statické globálním rozsahem.
Automatické odvození typu namísto explicitní typ názvy.
Chytré ukazatele namísto raw ukazatele.
std::stringa std::wstring typy (viz <string>) namísto raw char[] matice.
Standard template library (STL) kontejnerů, například vector, list, a map místo raw matice či vlastní kontejnery.See <vector>, <list>, and <map>.
Algoritmů STL místo ručně kódované neočekává.
Výjimky, sestavy a zpracovávají chybové stavy.
Inter-thread komunikace pomocí STL uvolnění zámku std::atomic<> (viz <atomic>) namísto jiných mechanismů inter-thread komunikace.
Vložené lambda funkce místo malé funkce samostatně implementována.
Na základě rozsahu pro smyček zapsat robustnější smyčky, které pracují s poli, STL kontejnery a Windows Runtime kolekce ve formě for (for-range-declaration :expression ). Jedná se o součást základní jazykovou podporu.Další informace naleznete v tématu Příkaz For založený na rozsahu (C++).
Vyvinul také jazyk C++ sám.Porovnejte následující fragmenty kódu.Tento ukazuje, jak věci používané v C++:
// circle and shape are user-defined types
circle* p = new circle( 42 );
vector<shape*> v = load_shapes();
for( vector<circle*>::iterator i = v.begin(); i != v.end(); ++i ) {
if( *i && **i == *p )
cout << **i << “ is a match\n”;
}
for( vector<circle*>::iterator i = v.begin();
i != v.end(); ++i ) {
delete *i; // not exception safe
}
delete p;
Zde je, jak lze provést totéž v moderní C++:
#include <memory>
#include <vector>
// ...
// circle and shape are user-defined types
auto p = make_shared<circle>( 42 );
vector<shared_ptr<shape>> v = load_shapes();
for_each( begin(v), end(v), [&]( const shared_ptr<shape>& s ) {
if( s && *s == *p )
cout << *s << " is a match\n";
} );
V moderních C++ nemusíte použít nové nebo odstranit nebo explicitní zpracování, protože chytré ukazatele můžete použít místo výjimek.Při použití auto zadejte srážek a lambda funkce, můžete napsat kód rychleji, zvýšit ji a lepšího pochopení.A for_each Čistič, je jednodušší a méně náchylné k neúmyslné chyby než for smyčky.Často používaný společně s minimální řádky kódu můžete použít zápis vaší aplikace.A provést tento kód výjimky bezpečný a paměti a mít žádné přidělování a navracení zpět nebo chybové kódy zabývat.
Moderní C++ zahrnuje dva druhy polymorfismu: kompilaci, pomocí šablon a run-time, prostřednictvím dědičnosti a virtualizace.Můžete používat dva druhy polymorfismus na velký vliv.Šablona STL shared_ptr využívá vnitřní virtuální metody k dosažení jeho vymazání zjevně pohodlná typu.Ale není virtualizace pro polymorfismus over-use, je-li šablona je lepší volbou.Šablony mohou být velmi výkonné.
Musíte-li do C++ z jiného jazyka, zejména ze spravovaných jazyk, ve kterém většinu typů jsou odkazové typy a velmi málo jsou typy hodnot, vědět, že třídy jazyka C++ jsou typy hodnot ve výchozím nastavení.Ale můžete je zadat jako odkazové typy, které chcete povolit polymorfní podporující objektově orientovaného programování.Užitečné perspektivy: Další informace o paměti a rozložení ovládacího prvku na odkazové typy jsou další informace o základních tříd a virtuální funkce pro podporu polymorfismus jsou typy hodnot.Ve výchozím nastavení jsou typy hodnot kopírovatelná – každá má konstruktor kopie a operátor přiřazení kopie.Zadáte-li typ odkazu, aby třídy není kopírovatelná – zakázat kopie konstruktoru a operátor přiřazení kopie – a používat virtuální destruktor, který podporuje polymorfismu.Hodnotové typy jsou také o obsahu, které při kopírování, umožňují dvou nezávislých hodnot, které lze upravit samostatně.Ale odkazové typy jsou o identitě, jaký druh objektu je – a z tohoto důvodu jsou někdy označovány jako polymorfní typy.
C++ dochází obrody, protože napájení je král znovu.Jazyky Java a C# jsou dobré, pokud programátor produktivity je důležité, ale zobrazit jejich omezení spotřeby a výkonu jsou prvořadý.Pro vysokou účinností a efektivitou, zejména na zařízení, které mají omezenou hardwaru nic údery moderní C++.
Nejen jazyk je moderní, nástroje pro vývoj jsou příliš.Visual Studioprovede všechny části cyklu vývoje, robustní a efektivní.Obsahuje nástroje pro správu životního cyklu aplikací (ALM), rozšíření rozhraní IDE, například technologie IntelliSense, nástroj friendly mechanismy jako XAML a budovy, ladění a mnoho dalších nástrojů.
Články v této části dokumentace poskytují vysoké úrovni pokyny a doporučené postupy pro nejdůležitější funkce a postupy pro psaní moderních aplikací C++.
Inteligentní ukazatelů (Příručka programování moderních C++)
Chyby a zpracování výjimek (moderní Příručka programování C++)