Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaPéter Székely Megváltozta több, mint 10 éve
1
C++11
2
TÖRTÉNETI ÁTTEKINTŐ Bjarne Stroustrup, AT&T 1979 C with classes 1983 ipari alkalmazás 1998 első szabvány 2003 apróbb módosítások 2005 tr1 2011 új irány
3
C++ RENESZÁNSZA 1990 – alacsony szintű nyelvek 2000 – erős hardverek, produktivitás 2010 – szerverfarmok, mobil eszközök
4
C++ ÉRTÉKEI C kompatibilitás Alacsony és magas szint Multi-paradigm programozási nyelv Absztrakciós lehetőségek (olcsón) Minden opcionális Multi-platform
5
C++11 ELŐTÖRTÉNET Szinte változatlan a szabvány 1998 óta Elterjedt megoldások Hiányos standard könyvtárak STL – copy TR1, Boost C++0x Szabványosítás előnyei
6
ÚJ SZABVÁNY SZEMPONTRENDSZERE Kompatibilitás Stílus Biztonság Sebesség Tanulhatóság Kényelem, hatékonyság
7
AZ ÚJ SZABVÁNY TARTALMA Inicializátor listák Range based loop Lambda függvények Saját konstans literálok Variadic templates Move szemantika Threads Regexp Chrono, Random Új STL containerek Static assertions Smart pointers Függvény objektumok Override, final nullptr konstans Új string konstansok, ustring Enum „osztályok” És még sok más…
8
AZ ÚJ SZABVÁNY TARTALMA vector vec = load_foo(); for(vector ::iterator it=vec.begin(); it != vec.end(); ++it) { (*it)->do_something(); } for(vector ::iterator it=vec.begin(); it != vec.end(); ++it) { delete *it; } vector > vec = load_foo(); for(auto i: vec) { i->do_something(); }
9
AZ ÚJ SZABVÁNY TARTALMA std::vector v = {5, 4, 3, 3, 4, 5, 1, 8, 9}; //std::initializer_list std::sort (begin(v), end(v), [](int a, int b){ return a%4 < b%4; }); for (int i: {1,5,7,3,2}) std::cout << i << " "; int i{3};
10
AZ ÚJ SZABVÁNY TARTALMA constexpr complex operator "" i(long double d) { return {0,d}; } auto z = 2+1i;// complex(2,1) string s = R"(\w\\\w)";
11
AZ ÚJ SZABVÁNY TARTALMA template void printf(const char* s, T value, Args... args) { while (s && *s) { if (*s=='%' && *++s!='%') { std::cout << value; return printf(++s, args...); } std::cout << *s++; }
12
AZ ÚJ SZABVÁNY TARTALMA class button; class window { shared_ptr btn = nullptr; }; class button { weak_ptr wnd; };
13
AZ ÚJ SZABVÁNY TARTALMA template class vector { vector(const vector&); vector(vector&&); vector& operator=(const vector&); vector& operator=(vector&&); }; foo = std::move(bar);
14
AZ ÚJ SZABVÁNY TARTALMA class X { int a[] = {1, 4, 5, 6, 7}; public: X(int x) { if (0<x && x<=max) a=x; else throw bad_X(x); } X() : X{42} {} X& operator=(const X&) = delete; X(const X&) = default; };
15
AZ ÚJ SZABVÁNY TARTALMA tuple t{"Foo", 42, 3.14159}; string bar{get (t)}; auto t = make_touple("foo", 3.14159, 42); array a = { 5, 2, 1}; a[3]=4; unordered_map um { { "Dijkstra", 1972 }, { "Scott", 1976 }, { "Wilkes", 1967 }, { "Hamming", 1968 } };
16
AZ ÚJ SZABVÁNY TARTALMA { enum class Color : char { red, blue }; Color a = Color::blue; } Color b = Color::red; //Hiba extern template class Foo ;
17
AZ ÚJ SZABVÁNY TARTALMA ifstream in("Be.txt"s); template auto multiply(T x, U y) -> decltype(x*y) { return x*y; } auto add = [](int a, int b)->int { return a+b };
18
AZ ÚJ SZABVÁNY TARTALMA auto func = std::bind(foobar,_2,_1,10); func(66,12); // foobar(12, 66, 10) // Új típusok char16_t a; char32_t b; long long c; u"String"; u8"string"; L"string"; U"string";
19
AZ ÚJ SZABVÁNY TARTALMA constexpr int add(int x, int y) { return x + y; } const int value = add(2, 9); static_assert(add(1, 8) == 9,„Error!");
20
VÁLTOZÁS A KÓDOLÁSI STÍLUSBAN Rövidebb, jobban olvasható kód Kevesebb hibalehetőség Gyorsabb program Kevesebb külső függvénykönyvtár "C++11 feels like a new language” – Bjarne Stroustrup
21
A SZABVÁNY JÖVŐJE Megvalósíthatóság Portolás Támogatás ( -std=C++11 vagy –std=C++0x ) C11 GCC, CLANG, MSVC C++1y
22
Standrad Library bővítés File system, unicode, network, date Pontosítások, pure keyword, static_if Concepts, GC, Reflection Tudomány Mátrix, Fizikai egységek, Újabb matematikai függvények Magas szintű könyvtárak: XML, GUI, 3D, Adatbázis
23
KONFERENCIÁK Going Native C++ Now! (BoostCon) C++ and Beyond Lang.Next BUILD2011 Folly / Casablanca ( Függvénykönyvtárak )
24
REFERENCIÁK http://www2.research.att.com/~bs/C++0xFAQ.html http://en.wikipedia.org/wiki/C%2B%2B11 http://en.cppreference.com/w/cpp http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSup port
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.