C++0x stručný náhled na nadcházející revizi standardu programovacího jazyka C++ (ISO/IEC 14882) Jan Ringoš.

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

Tomáš Petříček Microsoft C# MVP
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Uživatelem definované typy doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
David Bednárek Programování v C++ David Bednárek
Singleton 1 1.
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
Programování v C++ Cvičení.
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Algoritmizace a programování
Druhé cvičení Vytváření identifikátorů Datové typy
C# - struktury, výčtové typy, pole
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro práci se soubory 13 Verze
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
PB161 Jmenné prostory, I/O proudy PB161 | Jmenné prostory, IO proudy PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
PB161 – Programování v jazyce C++ Objektově Orientované Programování
Dynamická alokace, polymorfismus
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
DEKLARACE PROMĚNNÝCH A KONSTANT
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
 termín: středa :59  vytvořit kontejner – dvourozměrná matice  dopředné (forward) iterátory přes sloupce i řádky  velikost fixní, určená parametry.
PB161 Právo friend, přetěžování operátorů, přetypování PB161 | Friend, operátory PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Memento. Obnovení operačního systému ( Windows | Linux...) Všichni víme, co jsou transekce v databázi Memento – zálohování databáze.
VISUAL BASIC PRALG.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Příklady v jazyku C – část 3
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Pokročilé programování v C++ (část B) David Bednárek
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
VYTVOŘENÍ TŘÍDY KOMPLEXNÍHO ČÍSLA Vytvořte třídu proměnné, která bude prezentovat komplexní číslo. Zadávat se budou dvě složky, reálná a imaginární. Dále.
13/04/20151 Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje.
1 / 9X36DSA 2005The complexity of different algorithms varies: O(n), Ω(n 2 ), Θ(n·log 2 (n)), … Různé algoritmy mají různou složitost: O(n), Ω(n 2 ), Θ(n·log.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
PJV031 Přetypování (casting) Objekty, atributy, lokální proměnné, parametry a návratové hodnoty metod mají definovaný, neměnný typ. Jsou dva druhy typů:
Uživatelem definované typy Ing. Lumír Návrat  katedra informatiky, A 1018 
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Pokročilé programování v C++ (část B) David Bednárek
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
Pokročilé programování v C++ (část B)
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část I.
David Bednárek Programování v C++ David Bednárek
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
Pokročilé datové typy (struktury, unie, dynamické proměnné)
Programování v jazyce C++
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA:
Pokročilé programování v C++ (část B) David Bednárek
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
Alokace paměti v C++ Funkce v C++ a parametry typu reference, implicitní parametry funkcí.
Y36PJC Programování v jazyce C/C++
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
Y36PJC Programování v jazyce C/C++
Generické typy jsou třídy či interfejsy deklarující tzv. typové parametry jimiž: systematizují typovou kontrolu kompilátorem, vyjadřují jasněji smysl,
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
Singleton
Databázové systémy a SQL
C# přehled vlastností.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Singleton
Transkript prezentace:

C++0x stručný náhled na nadcházející revizi standardu programovacího jazyka C++ (ISO/IEC 14882) Jan Ringoš

Souhrn Stručná historie C++ Standardizace C++ Nové prostředky C++0x Prostor pro dotazy

C++ Historie: ALGOL  CPL  BCPL  B  C Bjarne Stroustup 1998 – ISO/IEC (STL) 2003 – Technical corrigendum 2005 – Technical Report 1 200x – C++0x

Standardizace C++ WG21 Zpětná kompatibilita Stabilita jazyka Standardizace –Zdlouhavá, byrokratická –Ale ovlivní ~3 milióny

Standardizace C++0x Zdokonalení jazyka –wish-listy, nelze začlenit ani všechny dobré Změna způsobu myšlení –co je dobrý program? –méně řádků, paměti a cpu Přímější vyjádření problémů –Logičtější sémantika/syntaxe –Beze ztráty efektivity

Prostředky jazyka Initializer lists Auto (decltype) R-Value Reference λ functors Constant expressions Concepts Variadic Templates

Jednotná inicializace type {b} // vždy inicializace type a{b}; // type a(b); type a = {b}; type a = type{b}; type * a = new type{b}; struct pt { double xyz [3]; pt() : xyz { 1.2, 3.4, 5.6 } {}; };

Inicializer lists std::initializer_list ; …alá std::type_info Adaptace napříč std kontejnery std::vector v = {1,2,3}; /* v.push_back (1); v.push_back (2); v.push_back (3); */

Auto (decltype) Změna významu klíčového slova Kompilátor zná typ auto i = 0; // int auto i = 1.0f; // float auto a = facility ::func(); // facility ::func_ret_type decltype(…)

Auto funkce Automatický návratový typ auto func(int i) -> double; template auto sum (T1 a, T2 b) -> decltype (a + b) { return a + b; };

R-Value reference Nynější reference: L-Value Reference na dočasné objekty a = (b + c); struct S { S& operator = (const S &); S& operator = (S &&); }; std::move / static_cast

Lambda funktory Anonymní objekty Volání v místě zápisu int min = 3; int max = 7; std::find_if (data.begin (), data.end (), [=](const int & e) { return e>=min && e<=max; });

Constexpr Co je konstantní výraz? int pole [n]; const int C::c = 4; const int a = 3 * C::c; const int b = func (); const int n = INT_MAX; const int m = numeric_limits ::max ();

Constexpr constexpr int n = 7; constexpr int cb (int x) { return x * x * x; }; constexpr int abs (int x) { return x < 0 ? -x : x; }; constexpr int i = cb(abs(-3));

Koncepty Typový systém pro šablony Vyjadřuje požadavky na typ Compile-time kontrola a lepší chybová hlášení concept requires concept_map

Koncepty auto concept LessThanCmp { bool operator < (T, T); }; template requires LessThanCmp void sort (…) { /* … */ };

Template alias Moderní nahrazení typedef Zjednodušení parametrů šablon using fptr_t = void (*)(int); template using my_vector = std::vector >;

Variadic templates Proměnný počet parametrů std::tuple, typelisty,... template struct count { static const int n = 1 + count ::n; }; template <> struct count <> { static const int n = 0; };

Konkurentní programy Běh programu ve více vláknech Concurrency memory model –omezení dosahu optimalizací std::thread a std::mutex Knihovna atomických typů std::exception_ptr –propagace výjimek mezi vlákny

Prostředky knihovny TR1, volitelné v C++98, součástí std knihovny C++0x std::array, std::tuple std::shared_ptr std::ref std::unordered_map/set std::regex std::random

Další Delegace konstruktorů explicit operator T (); –doplněk k explicitním konstruktorům for (int & i : sequence); static_assert (b, "error"); friend T; // typename T const char16_t * = u " string " ; const char32_t * = U " string " ;

...a další Linkage pro lokální třídy enum class : int { /* … */ }; >> long alignof / alignas nullptr a std::nullptr_t [[attributy]] sizeof (C::subtype);

Pokračování na GDP (v hospodě) (google „WG21“) Děkuji za pozornost Jan Ringoš