Zaawansowane programowanie w języku C++ Przeciążanie operatorów

Podobne dokumenty
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w języku C++ Wyjątki

Architektura komputerów Wprowadzenie do algorytmów

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Przeciążanie operatorów

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

Studia podyplomowe realizowane w ramach zadania 5 Systemy mobilne i techniki multimedialne

Języki i metody programowania Java. Wykład 2 (część 2)

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

dr inż. Małgorzata Langer Architektura komputerów

Systemy operacyjne na platformach mobilnych 2 Platforma Maemo

Medical electronics part 9a Electroencephalography (EEG)

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

Programowanie Komputerów

PARADYGMATY PROGRAMOWANIA Wykład 4

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

Układy reprogramowalne i SoC Implementacja w układach FPGA

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

Architektura komputerów Historia systemów liczących

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Układy reprogramowalne i SoC Język VHDL (część 4)

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

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

Programowanie obiektowe

Zaawansowane programowanie w języku C++ Podstawy programowania w C++

PARADYGMATY PROGRAMOWANIA Wykład 3

ROZDZIAŁ 2. Operatory

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

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

Systemy operacyjne na platformach mobilnych 3 Wstęp do systemu Android

Zaawansowane programowanie w języku C++ Wstęp

PROGRAMOWANIE w C prolog

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

Język C - podstawowe informacje

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

Standard C++0x (C++1x?) Marcin Świderski

Mikrosystemy Wprowadzenie. Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt.

ZARZĄDZANIE SIECIAMI TELEKOMUNIKACYJNYMI

Programowanie w języku C++

KOTLIN. Język programowania dla Androida

Szablony klas, zastosowanie szablonów w programach

Szablony funkcji i szablony klas

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.

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie, część I

Lab 9 Podstawy Programowania

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

Programowanie Obiektowe i C++

C++ Przeładowanie operatorów i wzorce w klasach

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

C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM

Wprowadzenie do szablonów klas

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

2 Przygotował: mgr inż. Maciej Lasota

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie strukturalne i obiektowe

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

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

Konstruktor kopiujacy

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie w języku C++

Wykład 5: Klasy cz. 3

Micha Strzelecki Metody przetwarzania i analizy obrazów biomedycznych (2)

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Paradygmaty programowania. Paradygmaty programowania

Wykład 2 Składnia języka C# (cz. 1)

Język ludzki kod maszynowy

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Przeciążenie operatorów

Słowa kluczowe i nazwy

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Część I Programowanie niskiego poziomu w języku C 19

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe w C++ Wykład 12

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

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

Nauczycielem wszystkiego jest praktyka Juliusz Cezar. Nauka to wiara w ignorancję ekspertów Richard Feynman

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

Zaawansowane programowanie w C++ (PCP)

Podstawy programowania w języku C i C++

Wykład 8: klasy cz. 4

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Różności w C++ Marek Pudełko

Języki i metodyka programowania. Wskaźniki i tablice.

POLITECHNIKA POZNAŃSKA. Programowanie systemów informatycznych LAB 30h

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

TEMAT : KLASY DZIEDZICZENIE

Dariusz Chaberski. UMK Toruń

Materiały do zajęć VII

ZASADY PROGRAMOWANIA KOMPUTERÓW

Programowanie obiektowe w C++ Wykład 03 Temat wiodący: Konstruktory i deskruktory. Konstruktory i Destruktory

Transkrypt:

Zaawansowane programowanie w języku C++ Przeciążanie operatorów Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja dystrybuowana jest bezpłatnie Politechnika Projekt Łódzka, współfinansowany ul. Żeromskiego przez Unię 116, Europejską 90-924 Łódź, tel. (042) 631 28 83 w ramach Europejskiego www.kapitalludzki.p.lodz.pl Funduszu Społecznego

Operatory w języku C++ Operator przypisania (=) Operatory arytmetyczne (+, -, *, /, %) Operatory mieszane (+=, -=, /= ) Operatory pre i post-inkrementacji/dekrementacji (++, ) Operatory porównania (==,!=, <, >, <=, >=) Operatory logiczne (!, &&, ) Operator warunkowy (?) Operator ',' Operatory bitowe ( &,, ^, ~, <<, >> ) Operator zasięgu '::' Operatory rzutowania Operatory new, delete, sizeof 2

Przeciążanie operatorów Operatory możemy przeciążać podobnie jak inne funkcje i metody języka C++ Operator się przeciąża poprzez zdefiniowanie funkcji operatorowej Argumentami operatorów są typami zadeklarowanymi zewnętrznie: struct, class, union, enum typ_zwracany operator<op>( argumenty ) 3

Przeciążanie operatorów Przeciążanie operatorów nie jest dla programistów klas (bibliotek) ale dla użytkowników klas (bibliotek)! 4

Przykład class Num int val; ; Num operator^( Num a, unsigned int b ) Num ret; ret.val = 1 for( unsigned int i = 0; i < b; ++i ) ret.val *= a.val; return ret; Num test; test.val = 2; test = test ^ 4; 5

Przykład class Num public: int val; Num& operator^( unsigned int b ) int val = 1 for( unsigned int i = 0; i < b; ++i ) val *= this->val; this->val = val; return *this; ; Num test; test.val = 2; test ^ 4; 6

Reguły przeciążania operatorów Zachowanie przedefiniowanego operatora nie musi mieć takiego samego znaczenia jak operatora pierwotnie zdefiniowanego W C++ nie można definiować nowych operatorów Nie wszystkie operatory da się przeciążyć:. (kropka).*?: :: sizeof 7

Reguły przeciążania operatorów - c.d. Operator przypisania (=)może być zdefiniowany tylko jako metoda Operatory wyłuskania spod wskaźnika (->) i (->*) mogą zwracać tylko i wyłącznie wskaźnik języka C++ Operator tablicowy ([ ]) może przyjmować tylko jeden argument 8

Operator tablicowy ([ ]) element& operator[]( unsigned int index ) return tab[index]; const element& operator[]( unsigned int index ) const return tab[index]; 9

Operator przypisania (=) class Num public: int val; Num& operator=( const Num& b ) this->val = b.val; return *this; ; 10

Operator przypisania (=) - c.d. class Num public: int val; Num& operator=( const Num& b ) if ( this!= &b ) this->val = b.val; return *this; ; 11

Operator przypisania (=) - c.d. Operator przypisania, a konstruktor kopiujący Obj a = 2; Obj b( a ); Obj c = a; a = c;... 12

Operatory inkrementacji i dekrementacji class Num public: int val; Num& operator++() ++( this->val ); return *this; Num operator++( int x ) Num tmp; tmp.val = this->val; ++( *this ); return tmp; ; 13

Operator funkcyjny () class Num public: int val; void somefunction( int arg ); void operator()( int arg ) this->somefunction( arg ); ; Num a; a.somefunction( 2 ); a( 2 ); 14

Operatory rzutowania class Num; public: int val; operator int() const return this->val; ; Num a; a.val = 2; int b = a; 15

Zaawansowane programowanie w języku C++ Przeciążanie operatorów Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 w ramach Europejskiego www.kapitalludzki.p.lodz.pl Funduszu Społecznego