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



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

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

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

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi. nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe

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

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

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

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

Polish edition copyright 2014 by Helion S.A. All rights reserved.

Program nauczania przeznaczony dla IV etapu edukacyjnego.

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

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

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

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Wartości domyślne, szablony funkcji i klas

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Wprowadzenie do programowanie obiektowego w języku C++

Mechanizm dziedziczenia

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

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

G PROGRAMMING. Part #4

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Centrum Szkoleo w Sochaczewie. Grzegorz Domaoski. grzegorz.domanski@wszim-sochaczew.edu.pl. MS Access 2010

Wykład 8: klasy cz. 4

Kompozycja i dziedziczenie klas

Paradygmaty programowania. Paradygmaty programowania

PowerShell. Sławomir Wawrzyniak

Centrum Szkoleo w Sochaczewie. Grzegorz Domaoski. MS Access 2010

ISBN Copyright by Wydawnictwo BTC Legionowo 2008

z programowania z przykładowymi rozwiązaniami

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Paradygmaty programowania


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

Język C++ zajęcia nr 2

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Informatyka, I stopień. Programowanie (PRO300.1)

Programowanie obiektowe w C++ Wykład 12

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

TEMAT : KLASY DZIEDZICZENIE

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Wykład 5: Klasy cz. 3

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Programowanie obiektowe w C++ Wykład 11

Deklaracja struktury w C++

Centrum Szkoleo w Sochaczewie. Grzegorz Domaoski. MS Access 2010

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wtedy wystarczy wybrać właściwego Taga z listy.

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14

Podstawy programowania skrót z wykładów:

PROGRAMOWANIE OBIEKTOWE W C++ - cz 1. Definicja klasy, składniki klasy, prawa dost pu, definiowanie funkcji składowych, konstruktory i destruktory.

Regu g l u a l min i n w s w pó p ł ó p ł r p acy O ow o iązuje od dnia

Wstęp do programowania

Plik klasy. h deklaracje klas

Mechanizm dziedziczenia

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Technologie internetowe Internet technologies Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Programowanie obiektowe w języku

Programowanie 2. Język C++. Wykład 2.

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

1 Podstawy c++ w pigułce.

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Język C++ Różnice między C a C++

Praca na wielu bazach danych część 2. (Wersja 8.1)

Instrukcja użytkowania DRIVER. Programator z przewodem sterowniczym. DRIVER 610 lub lub 2 strefy DRIVER

Andrzej Batko. Sztuka perswazji. czyli. jêzyk wp³ywu i manipulacji w praktyce ebook

Podstawy Programowania Obiektowego

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++

Przeciążenie (przeładowanie nazw) funkcji

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

Ostatnia cena sprzeda y klienta 1.0 dodatek do Symfonia Faktura dla 1 firmy

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

Podstawy programowania w języku C++

Szablony. Szablony funkcji

Instrukcja użytkownika Porównywarki cen Liquid

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

Stacjonarne Wszystkie Katedra Inżynierii Produkcji dr Sławomir Luściński. Kierunkowy Nieobowiązkowy Polski Semestr trzeci. Semestr zimowy Brak Tak

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Funkcje składowe (metody)

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

DJCONTROL INSTINCT I DJUCED PIERWSZE KROKI

Technologie cyfrowe semestr letni 2018/2019

Serwer Sieci Web (IIS)

Transkrypt:

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ść

Spis tre ci Wst p 5 Rozdzia 1. Narz dzia programistyczne 9 Rozdzia 2. S owo kluczowe auto, czyli kompilator okre la typ 13 Rozdzia 3. S owo kluczowe decltype, czyli typ taki sam jak tamten 19 Rozdzia 4. S owo kluczowe constexpr, czyli wyra enia sta e 23 Rozdzia 5. S owo kluczowe nullptr 31 Rozdzia 6. Lepsze typy wyliczeniowe enum class 35 Rozdzia 7. Inicjalizowanie tablic 39 Rozdzia 8. Inicjalizowanie klas na podobie stwo tablic 47 Rozdzia 9. Krotki (rekordy) 53 Rozdzia 10. Metody oznaczone default lub delete 61 Rozdzia 11. Bezpieczne wska niki unique_ptr i shared_ptr 69 Rozdzia 12. Kopiowanie i przenoszenie 79 Rozdzia 13. P tla for(... :...) dla kolekcji danych 87 Rozdzia 14. Prostsze tworzenie obiektów 91

4 C++11. Nowy standard wiczenia Rozdzia 15. S owo 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 wyra enia lambda 113 Zako czenie 123

13 P tla for(... :...) dla kolekcji danych Standard c++11 wprowadza uproszczon p tl for(...), przebiegaj c przez ca kolekcj podan jako argument. P tla ta jest odpowiednikiem znanej z innych j zyków p tli foreach(...) rób co dla ka dego elementu kolekcji. W I C Z E N I E 13.1 Wypisanie wszystkich elementów tablicy za pomoc nowej p tli for(...) Zadeklaruj tablic i za pomoc nowej p tli 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 p tla for() ma dwa pola: pole okre lenia zmiennej o typie zgodnym z typami w tablicy i pole okre lenia samej tablicy.

88 C++11. Nowy standard wiczenia Rysunek 13.1. Nowa p tla for() przebiega po tablicy i wy wietla jej elementy W I C Z E N I E 13.2 Modyfikacja wszystkich elementów tablicy za pomoc nowej p tli for(...) Zadeklaruj dla odmiany tablic vector i za pomoc nowej p tli 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 zosta a zadeklarowana jako referencja (odwo anie) i p tla for dla kolekcji umieszcza pod ni kolejno wszystkie elementy tablicy. Modyfikacja referencji oznacza modyfikacj oryginalnego elementu tablicy. Rysunek 13.2. Modyfikacja kolekcji za pomoc nowej p tli dla zakresów dla kolekcji

Rozdzia 13. P tla for(... :...) dla kolekcji danych 89 Podsumowanie Wi kszo iteracji po kolekcjach odbywa si od pocz tku do ko ca. Dlaczego t p tl otrzymali my tak pó no?

90 C++11. Nowy standard wiczenia

14 Prostsze tworzenie obiektów W standardzie c++11 znajdujemy dwa nowe drobiazgi: zadeklarowane w typach u ytkownika (klasach, strukturach) dane mog by inicjalizowane bezpo rednio, a nie jak dot d w konstruktorach; konstruktory typów u ytkownika mog wywo ywa inne konstruktory, co dotychczas te by o zabronione. W I C Z E N I E 14.1 Inicjalizowanie ustroju klasy bezpo rednio i za pomoc konstruktorów Zadeklaruj klas, w której zademonstrujesz zarówno bezpo rednie inicjalizowanie zmiennej, jak i stare rozwi zanie czyli inicjalizacj zmiennej za pomoc konstruktora:... class Stara public: int a; Stara():a( 17)cout << "Konstruktor" << endl;} };

92 C++11. Nowy standard wiczenia 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 dost pnej metody, czyli w konstruktorze (tutaj za pomoc tzw. listy inicjalizacyjnej konstruktora). Klasa Nowa inicjalizuje swoj zmienn przez bezpo rednie przypisanie warto ci w momencie deklaracji klasy. Konstruktory mog ewentualnie zmieni t warto. Rysunek 14.1. Niestety, kompilator jeszcze nie zna bezpo redniego inicjalizowania. Zgodnie z dotychczasowym standardem j zyka domaga si, by bezpo rednio inicjalizowana zmienna by a statyczna i sta a W I C Z E N I E 14.2 Konstruktor mo e inicjalizowa klas przez wywo anie innego konstruktora Przygotuj klas i zaopatrz j w takie konstruktory, by jeden z nich wywo ywa inny:... class T

Rozdzia 14. Prostsze tworzenie obiektów 93 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 wywo uje inny konstruktor tej e klasy. Do tej pory nie by o to mo liwe ka dy konstruktor musia przeprowadza niezale nie inicjalizacj obiektu. Konstruktor móg wywo ywa innego konstruktora tylko w obr bie drzewa dziedziczenia. Mówi c inaczej konstruktor klasy pochodnej wywo ywa konstruktora klasy bazowej. W obr bie jednej klasy takie wywo ania by y niemo liwe. Rysunek 14.2. Kompilator jeszcze nie realizuje opisywanego tu usprawnienia. Komunikat g osi, e wywo anie konstruktora przez konstruktor by oby mo liwe, gdyby nasza klasa dziedziczy a po sobie samej Podsumowanie Chyba ka dy m ody programista, który deklarowa pierwsz klas w swoim yciu, zastanawia si, dlaczego nie mo e zainicjowa jej pól warto ciami. By yby to jakby warto ci domy lne, wst pne, które konstruktory mog zmieni.

94 C++11. Nowy standard wiczenia Dodatkowo otrzymujemy mechanizm wywo ywania jednego konstruktora przez innego. Je li obydwa konstruktory tak samo (lub podobnie) inicjalizuj klas po co mamy powtarza ten sam kod?