Przeciążenie funkcji w C++ Mechanizm pozwalający na użycie tej samej funkcji do zdefiniowania kilku funkcji o takich samych listach parametrów.

Podobne dokumenty
string Rodzaj[4]= {"TV ", "wieza ", "DVD ", "kino "}; string Producent[4]={"Phillips", "Sony ", "Sanyo ", "Samsung "};

Szablony funkcji i klas (templates)

Co nie powinno być umieszczane w plikach nagłówkowych:

Szablony. Szablony funkcji

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

Techniki Programowania wskaźniki

Ssak::Ssak(Ssak& ref):waga(ref.ile_wazy()) {cout << "Konstruktor kopiujacy klasy Ssak...\n";} 1


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

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

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

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

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

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.

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

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

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

Szablony funkcji i szablony klas

// Struktura programu // Katalog. #include<iostream> #include "Book.h" #include "Audio.h" using namespace std;

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

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

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

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

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

1 Podstawy c++ w pigułce.

PARADYGMATY PROGRAMOWANIA Wykład 4

Część 4 życie programu

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Owad():waga(1),jadowitosc(false) {cout<<"konstruktor domyslny owada\n";}

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Identyfikacje typu na etapie. wykonania (RTTI)

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

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

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Obsługa wyjątków. Język C++ WW12

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.

Projektowanie klas c.d. Projektowanie klas przykład

Wprowadzenie do szablonów szablony funkcji

Programowanie Komputerów

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

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

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Wprowadzenie do szablonów szablony funkcji

C++ wprowadzanie zmiennych

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

Programowanie - wykład 4

1 Podstawy c++ w pigułce.

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

Programowanie obiektowe w C++ Wykład 12

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Język C++ wykład VIII

I - Microsoft Visual Studio C++

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

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

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;

Techniki Programowania wskaźniki 2

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

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

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

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

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

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

Podstawy Programowania Obiektowego

Technologie cyfrowe semestr letni 2018/2019

Laboratorium nr 10. Temat: Funkcje cz.2.

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

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

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

Programowanie Komputerów

TEMAT : KLASY POLIMORFIZM

JAVA W SUPER EXPRESOWEJ PIGUŁCE

TEMAT : KLASY DZIEDZICZENIE

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie, część I

class Samochod { void Ruch(); }; class Amfibia : public Samochod { void Ruch(); // amfibie pływają };

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

C-struktury wykład. Dorota Pylak

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

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

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.

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Język ludzki kod maszynowy

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

Plik klasy. h deklaracje klas

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Wzorce funkcji (szablony)

Przekazywanie argumentów wskaźniki

C-struktury wykład. Dorota Pylak

Wstęp do programowania

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Transkrypt:

Przeciążenie funkcji w C++ Mechanizm pozwalający na użycie tej samej funkcji do zdefiniowania kilku funkcji o takich samych listach parametrów. Przykład: dodawanie elementów danych 4 funkcje do różnych typów 1

// Przeciazenie funkcji #include<iostream> #include<string> using namespace std; int Dodaj(int a,int b); double Dodaj(double a,double b); char Dodaj(char a,char b); string Dodaj(string a,string b); void main() cout<<"int\t"<<dodaj(2,3)<<endl; cout<<"double\t"<<dodaj(2.5,3.6)<<endl; cout<<"char\t"<<dodaj('a','b')<<endl; cout<<"string\t"<<dodaj("abcd","efgh")<<endl; system("pause"); return; 2

int Dodaj(int a,int b) return a+b; double Dodaj(double a,double b) return a+b; char Dodaj(char a,char b) return a+b; string Dodaj(string a,string b) return a+b; Int 5 Double 6.1 Char â String abcdefgh Press any key to continue... 3

Szablony funkcji w C++ Mechanizm pozwalający na napisanie przepisu, na podstawie którego kompilator będzie tworzył funkcje stosując różne typy parametrów. template<class T> T Dodaj(T x, T len) template<typename T> T Dodaj(T x, T len) ciało funkcji return.; 4

// Szablony funkcji #include<iostream> #include<string> using namespace std; template<typename T> T Dodaj(T a,t b) T wynik=a+b; return wynik; void main() cout<<"int\t"<<dodaj(2,3)<<endl; cout<<"double\t"<<dodaj(2.5,3.6)<<endl; char a1='a', b1='b'; cout<<"char\t"<<dodaj(a1,b1)<<endl; //cout<<"char\t"<<dodaj('a','b')<<endl; 5

string a2="abcd",b2="efgh"; cout<<"string\t"<<dodaj(a2,b2)<<endl; //cout<<"string\t"<<dodaj("abcd","efgh")<<endl; system("pause"); return; Int 5 Double 6.1 Char â String abcdefgh Press any key to continue... 6

//szablon max elementu tablicy #include<iostream> using namespace std; // Szablon funkcji max template<typename T> T max(t x[], int rozmiar) T max = x[0]; for (int i = 1; i < rozmiar; i++) if (max < x[i]) max = x[i]; return max; int main() int Tablica_int[] = 3, 21, 34, 15; long Tablica_long[]=23, 245, 123, 1, 234, 2345; 7

double Tablica_double[]=23.0, 1.4, 2.5, 345.0, 12.3, 2.51; char Tablica_char[]="abdgrcf"; int rozmiar_int=sizeof Tablica_int/sizeof Tablica_int[0]; int rozmiar_long=sizeof Tablica_long/sizeof Tablica_long[2]; int rozmiar_double=sizeof Tablica_double/sizeof Tablica_double[0]; int rozmiar_char=sizeof Tablica_char/sizeof Tablica_char[0]; cout<< max(tablica_int, rozmiar_int)<<endl; cout<< max(tablica_long, rozmiar_long)<<endl; cout<< max(tablica_double, rozmiar_double)<<endl; cout<< max(tablica_char, rozmiar_char)<<endl; system("pause"); return 0; 8

34 2345 345 r Press any key to continue... 9

Makro Preprocesor jednostka kompilatora przetwarzająca kod przed jego rzeczywistą kompilacją. #define do tworzenia funkcji makro preprocesor podstawi ciąg tekstowy w miejscu, gdzie wystąpi argument #define #define MAX(x,y) ((x)>(y)? (x) : (y)) #define MIN(x,y) ((x)<(y)? (x) : (y)) 10

// Rozwijanie makr #include<iostream> using namespace std; #define CUBE(a) ((a)*(a)*(a)) #define THREE(a) a*a*a int main() long x = 5; long y = CUBE(x); long z = THREE(x); cout <<"y: "<<y<<endl; cout <<"z: "<<z<<endl; long a = 5, b = 7; y = CUBE(a+b); z = THREE(a+b); cout <<"y: "<<y<<endl; cout <<"z: "<<z<<endl; system("pause"); return 0; y: 125 z: 125 y: 1728 z: 82 Aby kontynuować, naciśnij dowolny klawisz... 11

Problemy z makro: 1. Makro musi się zmieścić w 1 linii 2. Jest rozwijane w każdym miejscu, gdzie jest wywoływane 3. Kod makra nie pojawia się w kodzie źródłowym trudne debugowanie 4. Makra nie są bezpieczne ze względu na typy bezpieczniej jest używać funkcji 12

Struktura unia klasa Są to definicje nowego typu danych Unia kontener do przechowywania danych Struktura zmienne składowe i funkcje składowe dostęp public Klasa - zmienne składowe i funkcje składowe dostęp private 13

// Unia #include<iostream> using namespace std; union Zmienna char oznaczenie; double wartosc; ; void main() Zmienna zmienna_1='a'; cout<<"zmienna_1\n"; cout<<"oznaczenie = "<<zmienna_1.oznaczenie<<endl; cout<<"wartosc = "<<zmienna_1.wartosc<<endl; Zmienna zmienna_2=6.5; cout<<"zmienna_2\n"; cout<<"oznaczenie = "<<zmienna_2.oznaczenie<<endl; cout<<"wartosc = "<<zmienna_2.wartosc<<endl; zmienna_1.wartosc=3.5; zmienna_2.oznaczenie='b'; 14

cout<<"zmienna_1\n"; cout<<"oznaczenie = "<<zmienna_1.oznaczenie<<endl; cout<<"wartosc = "<<zmienna_1.wartosc<<endl; cout<<"zmienna_2\n"; cout<<"oznaczenie = "<<zmienna_2.oznaczenie<<endl; cout<<"wartosc = "<<zmienna_2.wartosc<<endl; system ("pause"); return; zmienna_1 Oznaczenie = a Wartosc = 4.79244e-322 zmienna_2 Oznaczenie = Wartosc = 2.96439e-323 zmienna_1 Oznaczenie = Wartosc = 3.5 zmienna_2 Oznaczenie = b Wartosc = 4.84184e-322 Press any key to continue... 15

Struktura struct KSIAZKA C - definicja nowego typu danych char Tytul[80]; char Autor [80]; char Wydawca [80]; int Rok_wydania; ; Ograniczenia: 1. Nie ma możliwości umieszczenia zmiennej o tej samej nazwie (może być wskaźnik) 2. Ze strukturami nie działają wbudowane operatory KSIAZKA Powiesc;//Deklaracja zmiennej Powiesc typu //KSIAZKA 16

KSIAZKA Podrecznik = C++ dla kazdego ; J. Liberty ; Helion ; 2009; ; Powiesc.Rok_wydania=2011;// Dostęp do zmiennej 17

// Struktura #include<iostream> #include<string> using namespace std; struct Ksiazka string Autor; string Tytul; double rok_wydania; ; void Wyswietl() cout<<"autor :\t"<<autor<<endl; cout<<"tytul :\t"<<tytul<<endl; cout<<"rok :\t"<<rok_wydania<<endl; 18

void main() Ksiazka ksiazka_1="h. Sienkiewicz","Potop",2010; cout<<"rozmiar obiektu = "<<sizeof(ksiazka_1)<<endl; cout<<"ksiazka_1\n"; cout<<ksiazka_1.autor<<endl; cout<<ksiazka_1.tytul<<endl; cout<<ksiazka_1.rok_wydania<<endl; cout<<"zastosowanie funkcji \n"; ksiazka_1.wyswietl(); Ksiazka ksiazka_2; ksiazka_2.autor="w. Reymont"; ksiazka_2.tytul="chlopi"; ksiazka_2.rok_wydania=2012; ksiazka_2.wyswietl(); cout<<"rozmiar obiektu = "<<sizeof(ksiazka_2)<<endl; system ("pause"); return; 19

Rozmiar obiektu = 72 ksiazka_1 H. Sienkiewicz Potop 2010 Zastosowanie funkcji Autor : H. Sienkiewicz Tytul : Potop Rok : 2010 Autor : W. Reymont Tytul : Chlopi Rok : 2012 Rozmiar obiektu = 72 Press any key to continue... 20

// Klasa #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; ; void Wyswietl() cout<<"autor :\t"<<autor<<endl; cout<<"tytul :\t"<<tytul<<endl; cout<<"rok :\t"<<rok_wydania<<endl; 21

void main() Ksiazka ksiazka_1="h. Sienkiewicz","Potop",2010; cout<<"rozmiar obiektu = "<<sizeof(ksiazka_1)<<endl; cout<<"ksiazka_1\n"; cout<<ksiazka_1.autor<<endl; cout<<ksiazka_1.tytul<<endl; cout<<ksiazka_1.rok_wydania<<endl; cout<<"zastosowanie funkcji \n"; ksiazka_1.wyswietl(); Ksiazka ksiazka_2; ksiazka_2.autor="w. Reymont"; ksiazka_2.tytul="chlopi"; ksiazka_2.rok_wydania=2012; ksiazka_2.wyswietl(); cout<<"rozmiar obiektu = "<<sizeof(ksiazka_2)<<endl; system ("pause"); return; 22

1>klasa.cpp 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(23) : error C2552: 'ksiazka_1' : non-aggregates cannot be initialized with initializer list 1> 'Ksiazka' : Types with private or protected data members are not aggregate 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(26) : error C2248: 'Ksiazka::Autor' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(9) : see declaration of 'Ksiazka::Autor' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(27) : error C2248: 'Ksiazka::Tytul' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(10) : see declaration of 'Ksiazka::Tytul' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(28) : error C2248: 'Ksiazka::rok_wydania' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(11) : see declaration of 'Ksiazka::rok_wydania' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 23

1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(30) : error C2248: 'Ksiazka::Wyswietl' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(13) : see declaration of 'Ksiazka::Wyswietl' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(32) : error C2248: 'Ksiazka::Autor' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(9) : see declaration of 'Ksiazka::Autor' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(33) : error C2248: 'Ksiazka::Tytul' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(10) : see declaration of 'Ksiazka::Tytul' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(34) : error C2248: 'Ksiazka::rok_wydania' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(11) : see declaration of 'Ksiazka::rok_wydania' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(35) : error C2248: 'Ksiazka::Wyswietl' : cannot access private member declared in class 'Ksiazka' 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(13) : see declaration of 'Ksiazka::Wyswietl' 24

1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_03_03\w_03_03\klasa.cpp(8) : see declaration of 'Ksiazka' 1>Build log was saved at "file://e:\praca\dydaktyka\programowanie obiektowe\visual Project\Wykład 2016\W_03_03\W_03_03\Debug\BuildLog.htm" 1>W_03_03-9 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 25

// Klasa #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl() cout<<"\nautor :\t"<<autor<<endl; cout<<"tytul :\t"<<tytul<<endl; cout<<"rok :\t"<<rok_wydania<<endl; 26

void Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; ; void main() Ksiazka ksiazka_1; cout<<"rozmiar obiektu = "<<sizeof(ksiazka_1)<<endl; cout<<"ksiazka_1\n"; ksiazka_1.wpisz(); ksiazka_1.wyswietl(); 27

Ksiazka ksiazka_2; //ksiazka_2.autor="w. Reymont"; //ksiazka_2.tytul="chlopi"; //ksiazka_2.rok_wydania=2012; ksiazka_2.wyswietl(); cout<<"rozmiar obiektu = "<<sizeof(ksiazka_2)<<endl; system ("pause"); return; 28

Rozmiar obiektu = 72 ksiazka_1 Wpisywanie danych : Autor : Sienkiewicz Tytul : Potop Rok : 2009 Autor : Sienkiewicz Tytul : Potop Rok : 2009 Autor : Tytul : Rok : -9.25596e+061 Rozmiar obiektu = 72 Press any key to continue... 29

30

// Klasa umiejscowienie funkcji #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl(); void Wpisz(); ; void Ksiazka::Wyswietl() cout<<"\nautor :\t"<<autor<<endl; cout<<"tytul :\t"<<tytul<<endl; cout<<"rok :\t"<<rok_wydania<<endl; 31

void Ksiazka::Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; void main() Ksiazka ksiazka_1; cout<<"rozmiar obiektu = "<<sizeof(ksiazka_1)<<endl; cout<<"ksiazka_1\n"; ksiazka_1.wpisz(); ksiazka_1.wyswietl(); system ("pause"); return; 32

Rozmiar obiektu = 72 ksiazka_1 Wpisywanie danych : Autor : Reymont Tytul : Chlopi Rok : 1999 Autor : Reymont Tytul : Chlopi Rok : 1999 Press any key to continue... 33

// Klasa argumenty funkcji #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl(Ksiazka ks_x); void Wpisz(); ; void Ksiazka::Wyswietl(Ksiazka ks_x) cout<<"\nautor :\t"<<ks_x.autor<<endl; cout<<"tytul :\t"<<ks_x.tytul<<endl; cout<<"rok :\t"<<ks_x.rok_wydania<<endl; 34

void Ksiazka::Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; void main() Ksiazka ksiazka_1,ksiazka_2; ksiazka_1.wpisz(); ksiazka_2.wpisz(); ksiazka_1.wyswietl(ksiazka_1); ksiazka_1.wyswietl(ksiazka_2); system ("pause"); return; 35

Wpisywanie danych : Autor : Sienkiewicz Tytul : Potop Rok : 2010 Wpisywanie danych : Autor : Reymont Tytul : Chlopi Rok : 2009 Autor : Sienkiewicz Tytul : Potop Rok : 2010 Autor : Reymont Tytul : Chlopi Rok : 2009 Press any key to continue... 36

// Wywoływanie funkcji przez wskaźnik #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl(Ksiazka* wsk); void Wpisz(); ; void Ksiazka::Wyswietl(Ksiazka* wsk) cout<<"\nautor :\t"<<wsk->autor<<endl; cout<<"tytul :\t"<<wsk->tytul<<endl; cout<<"rok :\t"<<wsk->rok_wydania<<endl; 37

void Ksiazka::Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; void main() Ksiazka ksiazka_1,ksiazka_2; Ksiazka* ptr; ksiazka_1.wpisz(); ksiazka_2.wpisz(); ptr=&ksiazka_1; ksiazka_1.wyswietl(ptr); ptr=&ksiazka_2; ksiazka_1.wyswietl(ptr); system ("pause"); return; 38

Wpisywanie danych : Autor : Sienkiewicz Tytul : Potop Rok : 2007 Wpisywanie danych : Autor : Reymont Tytul : Chlopi Rok : 2000 Autor : Sienkiewicz Tytul : Potop Rok : 2007 Autor : Reymont Tytul : Chlopi Rok : 2000 Press any key to continue... 39

// Wywoływanie funkcji przez referencję #include<iostream> #include<string> using namespace std; class Ksiazka string Autor; string Tytul; double rok_wydania; public: void Wyswietl(Ksiazka& ref); void Wpisz(); ; void Ksiazka::Wyswietl(Ksiazka& ref) cout<<"\nautor :\t"<<ref.autor<<endl; cout<<"tytul :\t"<<ref.tytul<<endl; cout<<"rok :\t"<<ref.rok_wydania<<endl; 40

void Ksiazka::Wpisz() cout<<"wpisywanie danych :\nautor : \t"; cin>>autor; cout<<"tytul : \t"; cin>>tytul; cout<<"rok : \t"; cin>>rok_wydania; void main() Ksiazka ksiazka_1,ksiazka_2; ksiazka_1.wpisz(); ksiazka_2.wpisz(); Ksiazka& ref_k=ksiazka_1; ksiazka_1.wyswietl(ref_k); ref_k=ksiazka_2; ksiazka_1.wyswietl(ref_k); system ("pause"); return; 41

Wpisywanie danych : Autor : Reymont Tytul : Chlopi Rok : 2009 Wpisywanie danych : Autor : Tolkien Tytul : Hobbit Rok : 2014 Autor : Reymont Tytul : Chlopi Rok : 2009 Autor : Tolkien Tytul : Hobbit Rok : 2014 Press any key to continue... 42