C++ vás vítá zpět (moderní verze jazyka C++)
C++ je jedním z nejpoužívanějším programovací jazyky ve světě.Kvalitně programy v jazyce C++ jsou rychlé a efektivní.Jazyk je více flexibilní než jiných jazycích, protože slouží k tvorbě široké škály aplikací – z zábavné a vzrušující hry, k vysoce výkonná vědecké softwaru ovladačů zařízení, vložený programy a klientských aplikací pro Windows.Více než 20 let C++ byla použita k řešení problémů, jako jsou tyto a mnohé další.Co je možné, že vědět je stále rostoucí počet C++ programátory mít přeložen až po dowdy vykročte z minulosti programování ve stylu C a místo toho donned moderní jazyk C++.
Jedním z původní požadavků jazyka C++ byla zpětné kompatibility s jazykem C.Od té doby se C++ vyvíjela prostřednictvím několika 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á různá paradigmata programovací jazyk.V jazyce C++ můžete provést pouze procedurální stylu jazyka C programování, které jsou zapojeny nezpracovanou ukazatele, pole, řetězce znaků ukončený hodnotou null, vlastní datové struktury a dalších funkcí, které může povolit vysoký výkon, ale mohou také provést chyby a složitost.Vzhledem k tomu, že programování ve stylu C fraught s perils takových, byl jeden ze zakládající cíle jazyka C++ zprovoznění programů zajišťující bezpečnost typů a snazší zapsat, rozšíření a údržbu.Včasné C++ kterých je založena programovací paradigmata, jako je například objektově orientovaného programování.V letech byly přidány funkce pro určitý jazyk, spolu s vysokou otestovat standardní knihovny datových struktur a algoritmů.Jedná se o tyto dodatky, které byly provedeny moderní styl C++ možný.
Moderní jazyk C++ klade důraz:
Rozsah založené na zásobníku namísto haldy nebo statické globálním oboru.
Odvození typu automaticky místo explicitní typ názvů.
Chytré ukazatele namísto nezpracovanou ukazatele.
std::stringa std::wstring typy (viz <string>) namísto raw char[] pole.
Standardní šablona knihovny (STL) kontejnery, jako jsou vector, list, a map namísto nezpracovanou pole nebo vlastní kontejnerů.Informace naleznete v tématech <vector>, <list> a <map>.
Algoritmy STL namísto ručně programové stojí.
Výjimky pro sestavu a popisovač chybové stavy.
Komunikaci mezi vlákno pomocí STL uvolnění zámku std::atomic<> (viz <atomic>) namísto jiných mechanismů komunikace mezi vlákna.
Vložený lambda funkce namísto malé funkce samostatně implementována.
Na základě rozsahu pro smyčky k zápisu více robustní cykly, které pracují s poli, STL kontejnery a prostředí Windows Runtime kolekce ve formuláři for ( for-range-declaration : expression ).Toto je součástí základní jazykovou podporu.Další informace naleznete v tématu Příkaz For založený na rozsahu (C++).
Vyvíjela také samotné jazyk C++.Porovnejte následující fragmenty kódu.Tato třída ukazuje, jak věci používané v jazyce 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 se provádí totéž v moderní jazyk 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í jazyk C++ nemusíte používat nové či odstranit nebo explicitní zpracování vzhledem k tomu, že můžete použít inteligentní ukazatele místo výjimek.Používáte-li auto zadejte odečtení a lambda funkci, psaní kódu rychlejší, je zvýšit a porozumění lepší.A for_each je čisticí, snadné použití a lépe odolávat nežádoucí chyby než for cyklu.Vzorové společně s minimální řádků kódu slouží k zápisu vaší aplikace.A můžete provést tento kód výjimka – bezpečný a paměť a nechat žádné přidělování a navracení zpět nebo došlo k chybě kódy k řešení.
Moderní jazyk C++ zahrnuje dva druhy polymorfismus: kompilaci, prostřednictvím šablony a běhová prostřednictvím dědičnosti a virtualizace.Můžete používat dva druhy polymorfismus skvělé účelem.Šablona STL shared_ptr používá interní virtuální metody k provedení jeho vymazání zdánlivě pohodlná typu.Ale nepoužívám nadměrné virtualization pro polymorfismus při šablonu je vhodnější.Šablony mohou být velmi efektivní.
Pokud budete na C++ přecházejí z jiného jazyka, zejména ze spravovaných jazyk, ve kterém většinu typů jsou odkazové typy a 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, chcete-li povolit polymorfní chování, který podporuje objektově orientovaného programování.Užitečné perspektivy: Další informace o paměti a rozložení ovládacího prvku, odkazové typy jsou další informace o základní třídy a virtuální funkcí pro podporu polymorfismus jsou typy hodnot.Ve výchozím nastavení jsou typy hodnot kopírovatelná – oba mají kopie konstruktoru a operátor přiřazení kopie.Při zadávání typu odkazu, vytvořit třídu bez kopírovatelná – zakázat kopie konstruktoru a operátor přiřazení kopie – a používat virtuální destruktor, která podporuje polymorfismu.Typy hodnot, jsou také o obsahu, které při kopírování, umožňují dva nezávislé hodnoty, které lze upravit samostatně.Ale odkazové typy jsou o identitě, jaký druh objektu je – a z tohoto důvodu se někdy označují jako polymorfní typy.
C++ dochází obrody vzhledem k tomu, že je napájení king znovu.Jazyky jako Java a C# jsou vhodné při programátor produktivity je důležité, ale výkon, jsou prvořadý-li zobrazit jejich omezení.Pro vysoké efektivitu a výkon, zejména pokud jde o zařízení, která se mají omezené hardware Nic nepřekoná moderní jazyk C++.
Nejen jazyk je moderní, nástrojů pro vývoj jsou příliš.Visual Studiousnadňuje všech částí cyklu vývoje robustní a efektivní.Obsahuje nástroje pro správu životního cyklu aplikací (ALM), vylepšení prostředí IDE, jako je technologie IntelliSense, nástroj pro tisk mechanismy jako XAML a vytváření, ladění a mnoho dalších nástrojů.
Články v této části v dokumentaci k poskytování vysoké úrovně pokyny a doporučené postupy pro nejdůležitější funkce a techniky pro vytváření moderních programy v jazyce C++.
Životní cyklus objektů a správa prostředků (moderní verze jazyka C++)
Ukazatel na implementaci pro zapouzdření při kompilaci (moderní verze jazyka C++)
Další informace naleznete v článku rozhraním idioms jaké C++ jsou zastaralá v C ++ 11