Sdílet prostřednictvím


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++.

Další informace naleznete v článku rozhraním idioms jaké C++ jsou zastaralá v C ++ 11

Viz také

Referenční dokumentace

Výrazy lambda v jazyce C++

Další zdroje

Referenční dokumentace jazyka C++

Standardní knihovna C++ – referenční dokumentace