Wartości domyślne, przeciażenia funkcji

Podobne dokumenty
Wartości domyślne, przeciażenia funkcji

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji

Operacje wejścia/wyjścia odsłona pierwsza

Pola i metody statyczne

Wyliczanie wyrażenia obiekty tymczasowe

Referencje do zmiennych i obiektów

Konstruktor kopiujacy

Klasa, metody, rozwijanie w linii

Klasa, metody, rozwijanie w linii

Lista dwukierunkowa - przykład implementacji destruktorów

Szablon klasy std::vector

Szablon klasy std::list

Operacje wejścia/wyjścia (odsłona druga) - pliki

Przesłanianie nazw, przestrzenie nazw

Obiekty i metody stałe

Style programowania - krótki przeglad

Wprowadzenie do szablonów klas

Geneza powstania języka C++

Rzutowanie i konwersje

Geneza powstania języka C++

Podejście obiektowe - podstawowe pojęcia

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Szablony funkcji i szablony klas

Aplikacja po polsku. Bogdan Kreczmer. ZPCiR ICT PWr pokój 307 budynek C3.

Style programowania - krótki przeglad

PARADYGMATY PROGRAMOWANIA Wykład 4

Schemat konstrukcja pliku Makefile

Qt - edycja, obsługa zdarzeń, rozmieszczenie kontrolek

Wstęp do programowania

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Podstawy Programowania Obiektowego

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Qt - dialogi. Bogdan Kreczmer. ZPCiR ICT PWR pokój 307 budynek C3

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

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

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Klasa std::string. Bogdan Kreczmer. ZPCiR IIAiR PWr pokój 307 budynek C3.

Języki i techniki programowania Ćwiczenia 2

Qt sygnały i designer

Laboratorium nr 10. Temat: Funkcje cz.2.

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Tablice, funkcje - wprowadzenie

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

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 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

/*W tym miejscu funkcja system wywołuje systemową komendę PAUSE tj.czeka tak długo, aż zostanie wciśnięty dowolny znak z

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Programowanie - wykład 4

Qt - podstawowe cechy

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Przykład implementacji przeciażeń operatorów problem kolizji

Praca z aplikacją designer

Tworzenie aplikacji rozproszonej w Sun RPC

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Programowanie Obiektowew języku C++ Zadania L4

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

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

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Wykład 5: Klasy cz. 3

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

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

Programowanie Obiektowe i C++

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie obiektowe 2005/2006. Laboratorium 1. Przeciążanie funkcji

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

Zasoby, pliki graficzne

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

Lab 9 Podstawy Programowania

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

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie proceduralne w języku C++ Funkcje

Wykład 4: Klasy i Metody

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy programowania

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Wstęp do Programowania, laboratorium 02

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Techniki Programowania wskaźniki

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

Programowanie w Internecie. Java

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Transkrypt:

Wartości domyślne, przeciażenia funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępiony pod warunkiem wykorzystania wyłacznie do własnych prywatnych potrzeb i może on być kopiowany wyłacznie w całości, razem z niniejsza strona tytułowa.

Domyślne wartości parametrów funkcji void Funkcja A( int ip, float fp = 2.4, char const sp = Łańcuch znaków ) int main( ) Funkcja A(2); // Funkcja A(2,2.4, Łańcuch znaków ); Funkcja A(2, 9); // Funkcja A(2,9.0, Łańcuch znaków ); Funkcja A(2, Nowy łańcuch ); Funkcja A(2, 2.4, Inny łańcuch ); // Funkcja A(2,2.4, Inny łańcuch ); Definiowanie wartości domyślnych pozwala pominać wybrany parametr przy wywołaniu. Jednak zaniechanie odwołania się do tego parametru musi dotyczyć również wszystkich pozostałych występujacych po nim. Wartości domyślne, przeciażenia funkcji 1

Domyślne wartości parametrów funkcji Czy definiowanie wartości domyślnych jest możliwe w dowolnym porzadku? np. void Funkcja B( double dp = 4, int ip, char const sp = Łańcuch znaków ) Jeżeli dla danego parametru zostanie zdefiniowana wartość domyślna, to dla wszystkich parametrów występujacych po nim również musza zostać zdefiniowane wartości domyślne. Wartości domyślne, przeciażenia funkcji 2

Domyślne wartości parametrów funkcji Występowanie wartości domyślnych w zapowiedzi definicji funkcji. void Funkcja A( int ip, float fp = 2.4, char const sp = Łańcuch znaków ); void Funkcja A( int ip, float fp = 2.4, char const sp = Łańcuch znaków ) Jeżeli występuje zapowiedź funkcji, to w przypadku zdefiniowania domyślnych wartości parametrów musza one zostać umieszczone w zapowiedzi definicji. Niedopuszczalne jest wówczas powtórne redefiniowanie tych wartości w samej definicji funkcji (choćby były to te same wartości). Wartości domyślne, przeciażenia funkcji 3

Przeciażanie void Funkcja A( int ip ) void Funkcja A( int ip, float fp ) void Funkcja A( int ip, float fp, char const sp ) int main( ) Funkcja A(2); Funkcja A(2, 9.0); Funkcja A(2, 2.4, Inny łańcuch ); Przeciażenia sa możliwe dzięki temu, że funkcje sa identyfikowane poprzez swoje nazwy i listę typów parametrów. Wartości domyślne, przeciażenia funkcji 4

Przeciażanie void Funkcja A( int ip1, int ip2 ) void Funkcja A( int ip, float fp ) int main( ) Funkcja A(2, 9); Funkcja A(2, 9.0); Funkcja A(2, (float)9.0); //Jaka zostanie tutaj wywołana funkcja? //A jaka w tym miejscu? // To wywołanie jest poprawnym wywołaniem // drugiej z funkcji. Przeciażenia moga prowadzić do niejednoznaczności w przypadku, gdy dla danego typu aktualnego parametru wywołania funkcji istnieja domyślne konwersje dla obu typów argumentów, które sa podstawa rozróżnienia przeciażenia danej funkcji, np. dla wywołań powyżej dla typu double sa możliwe dwie konwersje, tzn. do typu intoraz do typu float (wartość 9.0 domyślnie traktowana jest jako wartość typu double). Wartości domyślne, przeciażenia funkcji 5

void Funkcja A( int ip ) Przeciażanie void Funkcja A( int ip, float fp ) void Funkcja A( int ip, float fp = 2.4, char const sp = Pewien napis ) int main( ) Funkcja A(2); Funkcja A(2, 9); Funkcja A(2, 9, Nowy napis ); Czy wszystko tu jest dobrze? Wartości domyślne, przeciażenia funkcji 6

void Funkcja A( int ip ) Przeciażanie void Funkcja A( int ip, float fp ) void Funkcja A( int ip, float fp = 2.4, char const sp = Pewien napis ) int main( ) Funkcja A(2); Funkcja A(2, 9); Funkcja A(2, 9, Nowy napis ); Wprowadzone w sposób nie przemyślany wartości domyślne parametrów moga prowadzić do niejednoznaczności tworzonych przeciażeń. Błędy te nie sa groźne, gdyż wykrywane sa na etapie kompilacji lub konsolidacji. Wartości domyślne, przeciażenia funkcji 7

Przeciażanie Inny typ przeciażenia, ale czy tak można? void Funkcja A( int ip ) int Funkcja A( int ip ) TAK NIE MOŻNA. Przeciażenia moga być dokonywane ze względu na listę parametrów funkcji. Typ zwracanej wartości nie może być podstawa do realizacji przeciażenia. Tego rodzaju błędy wykrywane sa na etapie kompilacji lub konsolidacji. Wartości domyślne, przeciażenia funkcji 8

Pytania i ćwiczenia 1. Dane sa definicje funkcji: void Funkcja(int ip, char napis ) ip = 5; int Funkcja(int ip, char const napis ) return 0; Czy przedstawione powyżej przeciażenie jest poprawne? Jeśli tak, to która funkcja zostanie uruchomiona dla wywołania: Funkcja(9, napis )? Jeżeli nie, to jak należy zapisać to przeciażenie aby było poprawne? 2. Dane sa definicje funkcji: int funkcja( int i, char const s = ) return 2; int funkcja( double i, char const s = napis ) return 3; double funkcja( ) return 3; Czy wywołanie funkcja(funkcja(funkcja(funkcja()))) jest poprawne? Jeżeli tak, to napisz które po kolei funkcje sa wywoływane. Jeżeli nie, to jak należy zmienić powyższe definicje aby wywołanie takie było poprawne? Wartości domyślne, przeciażenia funkcji 9