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

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

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

Dziedziczenie ze wspólnej klasy bazowej. Amfibia

Programowanie i struktury danych

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

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

STL: Lekcja 1&2. Filozofia STL


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.

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

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

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

Plik klasy. h deklaracje klas

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

Szablon klasy std::vector

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

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

Język C++ wykład VIII

Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński

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

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

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

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

Identyfikacje typu na etapie. wykonania (RTTI)

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

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

ATD. Wykład 8. Programowanie (język C++) abstrakcyjny typ danych. Abstrakcyjne typy danych (ATD) Metody czysto wirtualne. Definicje i uwagi:

Programowanie Obiektowew języku C++ Zadania L9

Projektowanie klas c.d. Projektowanie klas przykład

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Wstęp do Programowania 2

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

Szablon klasy std::list

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

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie obiektowe w C++ Wykład 12

Programowanie Obiektowew języku C++ Zadania L8

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

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Cena szkolenia. Opis kursu

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

dr inż. Jarosław Forenc

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

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

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

Kurs programowania. Wykład 9. Wojciech Macyna

Laboratorium 2. Funkcje wirtualne

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

Paradygmaty programowania

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Programowanie obiektowe i C++ dla matematyków

W przypadku STL w specyfikacji nazwy pliku nagłówkowego brak rozszerzenia tj. <string> <string.h> zamiast

Wstęp do Programowania 2

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

TEMAT : KLASY POLIMORFIZM

Dzisiejszy wykład. Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne

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

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

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

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

Biblioteka obiektowa C++ klasa string - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

it = 0; memset((void *)ptr, 0, items*sizeof(double)); cout << "Konstruktor sparametryzowany " << title << " adres: " << ptr << "\n";

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

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

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

obiekty funkcyjne - funktory

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Algorytmy i Struktury Danych.

Techniki Programowania wskaźniki

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

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

tablica: dane_liczbowe

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

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Jak Windows zarządza pamięcią?

Programowanie obiektowe i C++ dla matematyków

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

dr inż. Jarosław Forenc

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

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

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

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

Konstruktor kopiujacy

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Inicjacja tablicy jednowymiarowej

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

Część 4 życie programu

Programowanie obiektowe

Wstęp do programowania

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

Programowanie Obiektowe i C++

Programowanie Komputerów

Listy powiązane zorientowane obiektowo

Programowanie obiektowe język C++

Transkrypt:

/* Wirtualny konstruktor kopiujący*/ #include<iostream> using namespace std; class Ssak public: Ssak(int w):waga(w) cout<<"konstruktor klasy Ssak...\n"; } Ssak (Ssak& ref); virtual void Glos()cout<<"Glos ssaka\n";} virtual Ssak* Klonuj() return new Ssak(*this);} int Ile_wazy() return this->waga;} protected: int waga; }; Ssak::Ssak(Ssak& ref):waga(ref.ile_wazy()) cout << "Konstruktor kopiujacy klasy Ssak...\n";} 1

class Pies : public Ssak public: Pies():Ssak(10) cout<<"konstruktor klasy Pies...\n";} Pies(Pies & ref); virtual Ssak* Klonuj() return new Pies(*this);} void Glos()cout<<"Hau\n";} }; Pies::Pies(Pies& ref):ssak(ref) cout<<"konstruktor kopiujacy klasy Pies...\n";} class Kot : public Ssak public: Kot():Ssak(2) cout<<"konstruktor klasy Kot...\n";} Kot (Kot& ref); virtual Ssak* Klonuj() return new Kot(*this);} void Glos()cout<<"Miau\n";} }; 2

Kot::Kot(Kot& ref):ssak(ref) cout<<"konstruktor kopiujacy klasy Kot...\n";} enum ZWIERZAKI SSAK, KOT, PIES}; void main() Ssak *tablica [3]; Ssak* ptr; int wybor; for (int i = 0; i < 3; i++) cout<<"(1)pies (2)kot (3)ssak : "; cin>>wybor; switch (wybor) case PIES: ptr = new Pies; break; case KOT: ptr = new Kot; break; default: ptr = new Ssak(1); break; } 3

} tablica[i]=ptr; Ssak *tablica1[3]; for (int i = 0; i < 3 ; i++) tablica[i]->glos(); tablica1[i]=tablica[i]->klonuj(); } } cout<<"po sklonowaniu :\n\n"; for (int i = 0; i < 3; i++) cout<<"tablica1["<<i<<"]\n"; tablica1[i]->glos(); cout<<"waga : "<<tablica1[i]->ile_wazy()<<endl; } system("pause"); 4

(1)pies (2)kot (3)ssak : 1 Konstruktor klasy Ssak... Konstruktor klasy Kot... (1)pies (2)kot (3)ssak : 2 Konstruktor klasy Ssak... Konstruktor klasy Pies... (1)pies (2)kot (3)ssak : 3 Konstruktor klasy Ssak... Miau Konstruktor kopiujacy klasy Ssak... Konstruktor kopiujacy klasy Kot... Hau Konstruktor kopiujacy klasy Ssak... Konstruktor kopiujacy klasy Pies... Glos ssaka Konstruktor kopiujacy klasy Ssak... 5

Po sklonowaniu : tablica1[0] Miau Waga : 2 tablica1[1] Hau Waga : 10 tablica1[2] Glos ssaka Waga : 1 Press any key to continue... 6

// Użycie static_cast i dynamic_cast #include <iostream> using namespace std; class Zwierze public: virtual void Glos() = 0; }; class Pies : public Zwierze public: void Aktywnosc()cout<<"Pies : Macham ogonem!!"<<endl;} void Glos()cout<<"Pies : Hau hau!!"<<endl;} }; 7

class Kot : public Zwierze public: void Aktywnosc()cout<<"Kot : Zlapalem mysz!!"<<endl;} void Glos()cout<<"Kot : Miau miau!!"<<endl;} }; void ID(Zwierze* pzwierze); void main() Zwierze* pzwierze1 = new Pies; Zwierze* pzwierze2 = new Kot; } ID(pZwierze1); pzwierze1->glos(); //pzwierze1->aktywnosc(); ID(pZwierze2); pzwierze2->glos(); //pzwierze2->aktywnosc(); system("pause"); 8

void ID(Zwierze* pzwierze) Pies* ppies = static_cast<pies*>(pzwierze); if(ppies) cout<<"zwierze to pies"<<endl; ppies->glos(); ppies->aktywnosc(); } Kot* pkot = dynamic_cast<kot*>(pzwierze); if(pkot) cout<<"zwierze to kot"<<endl; pkot->glos(); pkot->aktywnosc(); } } 9

Zwierze to pies Pies : Hau hau!! Pies : Macham ogonem!! Pies : Hau hau!! Zwierze to pies Kot : Miau miau!! Pies : Macham ogonem!! Zwierze to kot Kot : Miau miau!! Kot : Zlapalem mysz!! Kot : Miau miau!! Press any key to continue... 10

// Użycie reinterpret_cast static_cast dynamic_cast #include <iostream> using namespace std; class Zwierze public: virtual void Aktywnosc() = 0; }; class Pies : public Zwierze public: void Aktywnosc()cout<<"Pies : Macham ogonem!!"<<endl;} }; class Kot : public Zwierze public: void Aktywnosc()cout<<"Kot : Zlapalem mysz!!"<<endl;} }; 11

void main() Zwierze* Podworko[8]; Podworko[0] = new Pies; Podworko[1] = new Kot; cout<<"elementy pierwotne :\n"; Podworko[0]->Aktywnosc(); Podworko[1]->Aktywnosc(); Podworko[2]=reinterpret_cast<Pies*>(Podworko[1]); Podworko[3]=reinterpret_cast<Kot*>(Podworko[0]); cout<<"reinterpret_cast :\nbylem kotem\n"; Podworko[2]->Aktywnosc(); cout<<"bylem psem\n"; Podworko[3]->Aktywnosc(); Podworko[4]=static_cast<Pies*>(Podworko[1]); Podworko[5]=static_cast<Kot*>(Podworko[0]); cout<<"static_cast :\nbylem kotem\n"; Podworko[4]->Aktywnosc(); cout<<"bylem psem\n"; Podworko[5]->Aktywnosc(); 12

/*Podworko[6]=dynamic_cast<Pies*>(Podworko[1]); Podworko[7]=dynamic_cast<Kot*>(Podworko[0]); cout<<"dynamic_cast :\nbylem kotem\n"; Podworko[6]->Aktywnosc(); cout<<"bylem psem\n"; Podworko[7]->Aktywnosc(); program się kompiluje, ale pada przy wykonaniu*/ } system("pause"); 13

Elementy pierwotne : Pies : Macham ogonem!! Kot : Zlapalem mysz!! reinterpret_cast : Bylem kotem Kot : Zlapalem mysz!! Bylem psem Pies : Macham ogonem!! static_cast : Bylem kotem Kot : Zlapalem mysz!! Bylem psem Pies : Macham ogonem!! Press any key to continue... 14

// Użycie reinterpret_cast static_cast i dynamic_cast #include <iostream> using namespace std; class Pies public: void Aktywnosc()cout<<"Pies : Macham ogonem!!"<<endl;} }; class Kot public: void Aktywnosc()cout<<"Kot : Zlapalem mysz!!"<<endl;} }; void main() Pies* psy[4]; Kot* koty[4]; 15

psy[0] = new Pies; koty[0] = new Kot; cout<<"elementy pierwotne :\n"; psy[0]->aktywnosc(); koty[0]->aktywnosc(); psy[1]=reinterpret_cast<pies*>(koty[0]); koty[1]=reinterpret_cast<kot*>(psy[0]); cout<<"reinterpret_cast :\nbylem kotem\n"; psy[1]->aktywnosc(); cout<<"bylem psem\n"; koty[1]->aktywnosc(); /*psy[2]=static_cast<pies*>(koty[0]); koty[2]=static_cast<kot*>(psy[0]); cout<<"static_cast :\nbylem kotem\n"; psy[2]->aktywnosc(); cout<<"bylem psem\n"; koty[2]->aktywnosc(); psy[3]=dynamic_cast<pies*>(koty[0]); koty[3]=dynamic_cast<kot*>(psy[0]); cout<<"dynamic_cast :\nbylem kotem\n"; psy[3]->aktywnosc(); cout<<"bylem psem\n"; 16

koty[3]->aktywnosc(); Pies Azor=reinterpret_cast<Pies>(*koty[0]);*/ Pies& Reks=reinterpret_cast<Pies&>(*koty[0]); cout<<"reinterpret_cast referencja do obiektu :\nbylem kotem\n"; Reks.Aktywnosc(); } system("pause"); Elementy pierwotne : Pies : Macham ogonem!! Kot : Zlapalem mysz!! reinterpret_cast : Bylem kotem Pies : Macham ogonem!! Bylem psem Kot : Zlapalem mysz!! reinterpret_cast referencja do obiektu : Bylem kotem Pies : Macham ogonem!! Press any key to continue... 17

1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_10_09\w_10_09\w_10_09.cpp(33) : error C2440: 'static_cast' : cannot convert from 'Kot *' to 'Pies *' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_10_09\w_10_09\w_10_09.cpp(34) : error C2440: 'static_cast' : cannot convert from 'Pies *' to 'Kot *' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_10_09\w_10_09\w_10_09.cpp(39) : error C2683: 'dynamic_cast' : 'Kot' is not a polymorphic type 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_10_09\w_10_09\w_10_09.cpp(13) : see declaration of 'Kot' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_10_09\w_10_09\w_10_09.cpp(40) : error C2683: 'dynamic_cast' : 'Pies' is not a polymorphic type 1> e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_10_09\w_10_09\w_10_09.cpp(7) : see declaration of 'Pies' 1>e:\praca\dydaktyka\programowanie obiektowe\visual project\wykład 2016\w_10_09\w_10_09\w_10_09.cpp(46) : error C2440: 'reinterpret_cast' : cannot convert from 'Kot' to 'Pies' 1> Conversion requires a constructor or user-defined-conversion operator, which can't be used by const_cast or reinterpret_cast 1>Build log was saved at "file://e:\praca\dydaktyka\programowanie obiektowe\visual Project\Wykład 2016\W_10_09\W_10_09\Debug\BuildLog.htm" 1>W_10_09-5 error(s), 0 warning(s) 18

Standardowa biblioteka wzorców (STL) Zestaw klas i funkcji wzorcowych dostarczających: 1. Kontenerów do przechowywania informacji 2. Iteratorów służących do uzyskiwania dostępu do przechowywanych informacji 3. Algorytmów pozwalających na manipulowanie treścią znajdującą się w kontenerach Kontenery STL: - sekwencyjne (przechowują dane sekwencyjnie podobnie jak tablice czy listy krótki czas wstawiania, długi wyszukiwania) - asocjacyjne (dane w postaci posortowanej dłuższy czas wstawiania, krótszy wyszukiwania) 19

Kontenery sekwencyjne std::vector std::deque Szybkie wstawianie elementu na końcu, dostęp podobny do tablicy Jak vector, możliwość wstawiania elementów na początku Zmiana wielkości może skutkować spadkiem wydajności, czas wyszukiwania proporcjonalny do liczby elementów Nie wymaga funkcji reserve () rezerwacja pamięci std::list Stały czas wstawiania na końcu i w środku listy, czas usuwania niezależny od położenia elementu Brak swobodnego dostępu do do elementów na podstawie ich indeksu 20

Kontenery asocjacyjne: std::set, std::multiset, std::map, std::multimap (pary kluczwartość) std::find Podstawowe algorytmy STL: std::find_if wyszukanie wartości std::reverse odwrócenie kolejności std::remove_if usunięcie std::transform - przekształcenie 21

Klasa STL string Służy do pracy z ciągami tekstowymi. Ułatwia: Kopiowanie Łączenie ciągów Wyszukiwanie znaków i podciągów tekstowych Skracanie Odwracanie zawartości ciągu tekstowego 22

// Ustanawianie i kopiowanie obiektów klasy string #include<string> #include<iostream> using namespace std; int main() const string lancuch_1("abcdefghijklmnop"); char* lancuch_2 ="ABCDEFGHIJKLMNOP" ; //string lancuch_3=const_cast<string>(lancuch_1); string lancuch_3=lancuch_2; lancuch_3+="qrst"; cout<<"lancuch_3 : "<<lancuch_3<<endl; string kopia_1 (lancuch_1); string kopia_2 (lancuch_2); cout<<"kopia 1 : "<<kopia_1<<endl; cout<<"kopia 2 : "<<kopia_2<<endl; string kopia_3(lancuch_3,6); cout <<"kopia 3 : " << kopia_3 <<endl; string kopia_3_1(lancuch_1,0,6); cout <<"kopia 3_1 : " << kopia_3 <<endl; 23

string kopia_4(lancuch_1,4,6); cout <<"kopia 4 : " << kopia_4 <<endl; string kopia_5(lancuch_2,6); cout <<"kopia 5 : " << kopia_5 <<endl; string kopia_6(lancuch_1,4,6); cout <<"kopia 6 : " << kopia_6 <<endl; } //Inicjalizacja obiektu z 4 znakami X string lancuch_4(4, 'X'); cout <<"lancuch_4 :" << lancuch_4 <<endl; system("pause"); 24

lancuch_3 : ABCDEFGHIJKLMNOPQRST kopia 1 : ABCDEFGHIJKLMNOP kopia 2 : ABCDEFGHIJKLMNOP kopia 3 : GHIJKLMNOPQRST kopia 3_1 : GHIJKLMNOPQRST kopia 4 : EFGHIJ kopia 5 : ABCDEF kopia 6 : EFGHIJ lancuch_4 :XXXX Press any key to continue... 25

// Dostęp do elementów składowych obiektu STL string #include<string> #include<iostream> using namespace std; void main() string lancuch_1("abcdefghijkl"); cout <<"Wyswietlenie zawartosci za pomoca tablicy :" <<endl; for (int k = 0; k < lancuch_1.length(); ++ k) cout <<"Znak [" << k <<"] to: "; cout << lancuch_1[k] <<endl; } cout <<endl; 26

//Dostęp do ciągu za pomocą iteratorów cout <<"Wyswietlenie znakow za pomoca iteratorow :" <<endl; int i = 0; string::iterator iter; for (iter = lancuch_1.begin() ; iter!= lancuch_1.end(); ++ iter) cout <<"Znak [" << i ++ <<"] to: "; cout << *iter <<endl; } cout <<endl; // Dostęp do zawartości jak do ciągu w stylu C } cout << "Reprezentacja char* ciagu to : "; cout << lancuch_1.c_str() <<endl; system("pause"); 27

Wyswietlenie zawartosci za pomoca tablicy : Znak [0] to: a Znak [1] to: b Znak [2] to: c Znak [3] to: d Znak [4] to: e Znak [5] to: f Znak [6] to: g Znak [7] to: h Znak [8] to: i Znak [9] to: j Znak [10] to: k Znak [11] to: l Wyswietlenie znakow za pomoca iteratorow : Znak [0] to: a Znak [1] to: b Znak [2] to: c Znak [3] to: d Znak [4] to: e Znak [5] to: f Znak [6] to: g Znak [7] to: h Znak [8] to: i Znak [9] to: j Znak [10] to: k Znak [11] to: l Reprezentacja char* ciagu to : abcdefghijkl Press any key to continue... 28

// Łączenie ciągów tekstowych #include<string> #include<iostream> using namespace std; void main() string przyklad_1 ("Przyklad 1"); string przyklad_2 (" i drugi."); //Łączenie przyklad_1 += przyklad_2; cout << przyklad_1 << endl; } string przyklad_3 (" Mozna dodac trzeci!"); przyklad_1.append (przyklad_3); cout << przyklad_1 << endl; char* wskaznik = " Wskaznik tez mozna dodac!"; przyklad_1.append(wskaznik); cout << przyklad_1 << endl; system("pause"); 29

Przyklad 1 i drugi. Przyklad 1 i drugi. Mozna dodac trzeci! Przyklad 1 i drugi. Mozna dodac trzeci! Wskaznik tez mozna dodac! Press any key to continue... 30