C 11 Nowy standard cwiczenia 2

background image
background image

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu
niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą
kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym,
magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź
towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce
informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za
ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub
autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej
odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych
w książce.

Redaktor prowadzący: Michał Mrowiec

Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie?cwcp11
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Kody źródłowe wybranych przykładów dostępne są pod adresem:
ftp://ftp.helion.pl/przyklady/cwcp11.zip

ISBN: 978-83-246-3935-9

Copyright © Helion 2012

Printed in Poland.

Kup książkę

Poleć książkę

Oceń książkę

Księgarnia internetowa

Lubię to! » Nasza społeczność

background image

Spis treci

Wstp

5

Rozdzia 1. Narzdzia programistyczne

9

Rozdzia 2. Sowo kluczowe auto, czyli kompilator okrela typ

13

Rozdzia 3. Sowo kluczowe decltype, czyli typ taki sam jak tamten

19

Rozdzia 4. Sowo kluczowe constexpr, czyli wyraenia stae

23

Rozdzia 5. Sowo kluczowe nullptr

31

Rozdzia 6. Lepsze typy wyliczeniowe enum class

35

Rozdzia 7. Inicjalizowanie tablic

39

Rozdzia 8. Inicjalizowanie klas na podobiestwo tablic

47

Rozdzia 9. Krotki (rekordy)

53

Rozdzia 10. Metody oznaczone default lub delete

61

Rozdzia 11. Bezpieczne wskaniki unique_ptr i shared_ptr

69

Rozdzia 12. Kopiowanie i przenoszenie

79

Rozdzia 13. Ptla for( ... : ...) dla kolekcji danych

87

Rozdzia 14. Prostsze tworzenie obiektów

91

Kup książkę

Poleć książkę

background image

4

C + + 1 1 . N o w y s t a n d a r d • w i c z e n i a

Rozdzia 15. Sowo kluczowe explicit i mocniejsza ochrona

przed przypadkowymi konwersjami

95

Rozdzia 16. Operator sizeof() zna rozmiary elementów klasy

99

Rozdzia 17. Szablony ze zmienn liczb argumentów

101

Rozdzia 18. Funkcje i wyraenia lambda

113

Zakoczenie

123

Poleć książkę

Kup książkę

background image

13

Ptla for( ... : ...)

dla kolekcji danych

Standard c++11 wprowadza uproszczon ptl

for( ...)

, prze-

biegajc przez ca kolekcj podan jako argument. Ptla ta jest
odpowiednikiem znanej z innych jzyków ptli

foreach( ...)

— rób co dla kadego elementu kolekcji.

W I C Z E N I E

13.1

Wypisanie wszystkich elementów tablicy za pomoc
nowej ptli for( ...)

Zadeklaruj tablic i za pomoc nowej ptli

for()

dla kolekcji wyprowad

na ekran jej elementy (rysunek 13.1):

...
int tablica[5] = {1, 2, 3, 4, 5};
for(int element : tablica)
{
cout << element << endl;
}
...

Nowa ptla

for()

ma dwa pola: pole okrelenia zmiennej o typie zgod-

nym z typami w tablicy i pole okrelenia samej tablicy.

Poleć książkę

Kup książkę

background image

8 8

C + + 1 1 . N o w y s t a n d a r d • w i c z e n i a

Rysunek 13.1. Nowa ptla for() przebiega po tablicy i wywietla jej elementy

W I C Z E N I E

13.2

Modyfikacja wszystkich elementów tablicy
za pomoc nowej ptli for( ...)

Zadeklaruj dla odmiany tablic

vector

i za pomoc nowej ptli

for()

dla

kolekcji zmodyfikuj elementy kolekcji:

...
#include <vector>
...
int main()
{
vector<double> v={1, 2, 3};
for( double &r : v)
{
r = 3.14;
}

cout << v[ 0] << ", " << v[ 1] << ", " << v[ 2] << endl;

system("PAUSE");
return EXIT_SUCCESS;
}

W stosunku do poprzedniego wiczenia zmienna robocza

r

zostaa za-

deklarowana jako referencja (odwoanie) i ptla

for

dla kolekcji umiesz-

cza pod ni kolejno wszystkie elementy tablicy. Modyfikacja referencji
oznacza modyfikacj oryginalnego elementu tablicy.

Rysunek 13.2. Modyfikacja kolekcji za pomoc nowej ptli dla zakresów
dla kolekcji

Poleć książkę

Kup książkę

background image

R o z d z i a 1 3 . • P t l a f o r ( . . . : . . . ) d l a k o l e k c j i d a n y c h

8 9

Podsumowanie

Wikszo iteracji po kolekcjach odbywa si „od pocztku do koca”.
Dlaczego t ptl otrzymalimy tak póno?

Poleć książkę

Kup książkę

background image

9 0

C + + 1 1 . N o w y s t a n d a r d • w i c z e n i a

Poleć książkę

Kup książkę

background image

14

Prostsze tworzenie

obiektów

W standardzie c++11 znajdujemy dwa nowe drobiazgi:

T

zadeklarowane w typach uytkownika (klasach, strukturach) dane
mog by inicjalizowane bezporednio, a nie — jak dotd —
w konstruktorach;

T

konstruktory typów uytkownika mog wywoywa inne
konstruktory, co dotychczas te byo zabronione.

W I C Z E N I E

14.1

Inicjalizowanie ustroju klasy bezporednio
i za pomoc konstruktorów

Zadeklaruj klas, w której zademonstrujesz zarówno bezporednie ini-
cjalizowanie zmiennej, jak i stare rozwizanie — czyli inicjalizacj
zmiennej za pomoc konstruktora:

...
class Stara
{
public:
int a;
Stara():a( 17){cout << "Konstruktor" << endl;}
};

Poleć książkę

Kup książkę

background image

9 2

C + + 1 1 . N o w y s t a n d a r d • w i c z e n i a

class Nowa
{
public:
int a = 17;
Nowa(){ cout << "Konstruktor" << endl;}
};

int main()
{
Stara s;
cout << s.a << endl;

Nowa n;
cout << n.a << endl;

system("PAUSE");
return EXIT_SUCCESS;
}

Dwie klasy maj pewn zmienn. Klasa

Stara

inicjalizuje t zmienn

za pomoc do tej pory jedynej dostpnej metody, czyli w konstruktorze
(tutaj za pomoc tzw. listy inicjalizacyjnej konstruktora). Klasa

Nowa

inicjalizuje swoj zmienn przez bezporednie przypisanie wartoci
w momencie deklaracji klasy. Konstruktory mog ewentualnie zmieni
t warto.

Rysunek 14.1. Niestety, kompilator jeszcze nie zna bezporedniego
inicjalizowania. Zgodnie z dotychczasowym standardem jzyka domaga si,
by bezporednio inicjalizowana zmienna bya statyczna i staa

W I C Z E N I E

14.2

Konstruktor moe inicjalizowa klas przez wywoanie
innego konstruktora

Przygotuj klas i zaopatrz j w takie konstruktory, by jeden z nich wy-
woywa inny:

...
class T
{

Poleć książkę

Kup książkę

background image

R o z d z i a 1 4 . • P r o s t s z e t w o r z e n i e o b i e k t ó w

9 3

private:
int a;
public:
T():a( 17){cout << "Konstruktor 'T()'" << endl;}
T( double r):T(){cout << "Konstruktor 'T( double r)'" << endl;}
};

int main()
{
T a;
T b( 3.14);

system("PAUSE");
return EXIT_SUCCESS;
}

Typ

T

w konstruktorze z argumentem wywouje inny konstruktor teje

klasy. Do tej pory nie byo to moliwe — kady konstruktor musia
przeprowadza niezalenie inicjalizacj obiektu. Konstruktor móg wy-
woywa innego konstruktora tylko w obrbie drzewa dziedziczenia.
Mówic inaczej — konstruktor klasy pochodnej wywoywa konstruk-
tora klasy bazowej. W obrbie jednej klasy takie wywoania byy nie-
moliwe.

Rysunek 14.2. Kompilator jeszcze nie realizuje opisywanego tu usprawnienia.
Komunikat gosi, e wywoanie konstruktora przez konstruktor byoby moliwe,
gdyby nasza klasa dziedziczya po sobie samej

Podsumowanie

Chyba kady mody programista, który deklarowa pierwsz klas
w swoim yciu, zastanawia si, dlaczego nie moe zainicjowa jej pól
wartociami. Byyby to jakby wartoci domylne, wstpne, które kon-
struktory mog zmieni.

Poleć książkę

Kup książkę

background image

9 4

C + + 1 1 . N o w y s t a n d a r d • w i c z e n i a

Dodatkowo otrzymujemy mechanizm wywoywania jednego konstruk-
tora przez innego. Jeli obydwa konstruktory tak samo (lub podobnie)
inicjalizuj klas — po co mamy powtarza ten sam kod?

Poleć książkę

Kup książkę

background image
background image

Wyszukiwarka

Podobne podstrony:
C 11 Nowy standard cwiczenia cwcp11
C 11 Nowy standard cwiczenia cwcp11
C 11 Nowy standard cwiczenia
C 11 Nowy standard Ćwiczenia 2
06 11 2013 Nasiennictwo ćwiczenia
Przykład 11-11-nowy-pop, Przykład 1
19 11 06r Matematyka ćwiczenia
Nowy folder, Ćwiczenie 40
EKONOMIA MIĘDZYNARODOWA 30.11.2014, V rok, Ćwiczenia, Ekonomia międzynarodowa
Wstęp do Psychologii Ćwiczenia , ćwiczenie 1 11 10 2013, ćwiczenie 2  10 2013
Adobe Photoshop 7 0 wyznacza nowy standard
cwiczenia 9 11.01.2008, cwiczenia - dr skladowski
Nowy regulamin cwiczen, Biologia UWr, II rok, Fizjologia Zwierząt
11, Sprawozdanie 11', SCHEMAT OPRACOWANIA ĆWICZENIA
cwiczenia 17 11.04.2008, cwiczenia - dr skladowski
cwiczenia 17 11.04.2008, cwiczenia - dr skladowski

więcej podobnych podstron