• Nie Znaleziono Wyników

Cel i zakres przedmiotu

N/A
N/A
Protected

Academic year: 2021

Share "Cel i zakres przedmiotu"

Copied!
27
0
0

Pełen tekst

(1)

Zaawansowane programowanie w C++ (PCP)

Wykład 1 - sprawy organizacyjne i wprowadzenie.

dr in˙z. Robert Nowak

(2)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

Cel i zakres przedmiotu

Umiej ˛etno´s´c programowania to umiej ˛etno´s´c rozwi ˛ azania problemów przy pomocy komputera.

 Czy ten problem mo˙ze by´c rozwi ˛ azany przy pomocy komputera?

 Czy ten problem powinien by´c rozwi ˛ azany przy pomocy komputera?

Komputer = „głupi automat”.

 zapoznanie słuchaczy z zagadnieniami tworzenia oprogramowania w C++

 współcze´snie stosowane techniki i biblioteki

Zakładana jest znajomo ´s ´c programowania strukturalnego

(3)

» Cel i zakres przedmiotu

Sprawy organizacyjne

» Podstawowe dane o przedmiocie

» Zaj ˛ecia

» Literatura

» Zaliczenie przedmiotu

» Wymaganie oprogramowanie

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

Podstawowe dane o przedmiocie

Miejsce spotka ´ n:

 Pi ˛ atki 8 1510 00 , sala N7 (wykład)

 Pi ˛ atki 8 1510 00 , sala N102 (laboratorium) Prowadz ˛ acy:

dr in˙z. Robert Nowak, Zakład Sztucznej Inteligencji, Wydział Elektroniki i Technik Informacyjnych, Politechnika Warszawska.

e-mail:

r.m.nowak@elka.pw.edu.pl strona przedmiotu:

http://staff.elka.pw.edu.pl/˜rnowak2/pcp2007L

(4)

» Cel i zakres przedmiotu

Sprawy organizacyjne

» Podstawowe dane o przedmiocie

» Zaj ˛ecia

» Literatura

» Zaliczenie przedmiotu

» Wymaganie oprogramowanie

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

Zaj ˛ecia

1 Klasy autonomiczne, cykl ˙zycia obiektów.

2 Agregacja i dziedziczenie, polimorfizm, klasy abstrakcyjne.

3 Laboratorium 1: funkcje wirtualne, hierarchia klas.

4 Wzorce projektowe.

5 Obsługa bł ˛edów, mechanizm wyj ˛ atków, sprytne wska´zniki.

6 Laboratorium 2: wyj ˛ atki. Rozdanie zada ´n projektowych.

7 Rola projektowania i testowania, repozytorium.

8 Szablony, wst ˛ep do biblioteki standardowej, strumienie.

9 Biblioteka standardowa: kontenery, algorytmy.

10 Laboratorium 4: Kolokwium.

11 Laboratorium 5: realizacja projektu 12 Laboratorium 6: realizacja projektu

13 Aplikacje wielow ˛ atkowe, synchronizacja, boost::thread.

(5)

» Cel i zakres przedmiotu

Sprawy organizacyjne

» Podstawowe dane o przedmiocie

» Zaj ˛ecia

» Literatura

» Zaliczenie przedmiotu

» Wymaganie oprogramowanie

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

Literatura

 Bjarne Stroustrup, J ˛ezyk C++, WNT 2002.

 Bruce Eckel, Thinking in C++, Helion 2002.

 E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Wzorce projektowe, WNT, 2005.

 A. Alexandrescu, Nowoczesne projektowanie w C++, WNT, 2005.

 A. Alexandrescu and H. Sutter, Je¸zyk C++. Standardy kodowania. 101 zasad, wytycznych i zalecanych praktyk, Helion, 2005.

 B. Karlsson, Wie¸cej ni˙z C++. Wprowadzenie do bibliotek Boost, Helion, 2006.

 S. Meyers, 50 efektywnych sposobów na udoskonalenie

Twoich programów, Helion, 2003.

(6)

» Cel i zakres przedmiotu

Sprawy organizacyjne

» Podstawowe dane o przedmiocie

» Zaj ˛ecia

» Literatura

» Zaliczenie przedmiotu

» Wymaganie oprogramowanie

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

Zaliczenie przedmiotu

Podział punktów:

kolokwium 0 – 30pkt

´cwicze ´n laboratoryjnych 0 – 40pkt

projektów 0 – 30pkt

Warunkiem zaliczenia jest uzyskanie przynajmniej 51 pkt.

Ocena:

91 – 100 punktów ocena 5

81 – 90 pkt. ocena 4 1 2

71 – 80 pkt. ocena 4

61 – 70 pkt. ocena 3 1 2

51 – 60 pkt. ocena 3

0 – 50 pkt. ocena 2

(7)

» Cel i zakres przedmiotu

Sprawy organizacyjne

» Podstawowe dane o przedmiocie

» Zaj ˛ecia

» Literatura

» Zaliczenie przedmiotu

» Wymaganie oprogramowanie

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

Wymaganie oprogramowanie

 kompilatory:

 the GNU Compiler Collection

 Microsoft Visual Studio 2005

 biblioteki:

 stl

 boost - http://www.boost.org

 inne:

 repozytorium - http://subversion.tigris.org

 edytor tekstu

 debugger

(8)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

» Sposób, aby zosta´c dobrym programist ˛a

» zasady dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

Sposób, aby zosta ´c dobrym programist ˛ a

 Czyta´c kod innych.

 My´sle´c!

 Programowa´c.

(9)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

» Sposób, aby zosta´c dobrym programist ˛a

» zasady dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

zasady dobrego stylu programowania

Wykrywanie bł ˛edów w programach:

 Wykorzystywa´c kompilator.

 Zawsze doprowadzi´c do czystej kompilacji (bez ˙zadnych ostrze˙ze ´n) na najwy˙zszym poziomie.

 Rozumie´c ka˙zde ostrze˙zenie.

Stosowa´c standardy kodowania:

 pliki ´zródłowe,

 nazewnictwo,

 formatowanie kodu ´zródłowego,

 stosowa´c konsekwentnie ten sam styl kodowania.

(10)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Typy wbudowane

 logiczny: bool , true , false

 całkowite: int , long , ...

 rzeczywiste: double , ...

 znakowe: char , wchar_t

 typ wyliczeniowy

enum Kolory { RED = 1, GREEN = 2, BLUE = 4};

 void - oznacza brak informacji

 typy wska´znikowe

 typy tablicowe

 typy referencyjne

typedef

(11)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Czas ˙zycia obiektów

l-warto´ s´ c : odnosi si ˛e do „czego´s” co istnieje w pami ˛eci.

 Automatyczne:

 tworzone w chwili napotkania definicji

 s ˛ a niszczone w momencie wyj´scia z zasi ˛egu (np. z bloku)

 definicja powinna by ´c wtedy gdy mo˙zna zainicjowa ´c

 Statyczne (globalne i zadeklarowane jako static )

 tworzone tylko raz

 s ˛ a niszczone po zako ´nczeniu programu

 dynamiczne (tworzone na stercie)

 operatory new i delete (uwaga! oddzielna wersja dla tablic),

 programista steruje czasem ˙zycia obiektów (tworzy je i usuwa),

 Nie u˙zywamy funkcji z <stdlib.h> , czyli malloc , free

itp.

(12)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Wykorzystywanie stałych

Stałe definiuje si ˛e za pomoc ˛ a słowa kluczowego const .

const int NUM = 34;

const int WZROST[] = { 174, 185, 193, 168 };

 unika si ˛e „magicznych” liczb w kodzie,

 pokazuje si ˛e, ˙ze funkcja nie zmienia argumentów,

 pozwala si ˛e kompilatorowi na optymalizacje.

Systematycznie korzysta´c ze stałych symbolicznych!

int i = 2, j = 3;

const int* p = &i;

p = &j;

*p = 4;

int* const q = &i;

(13)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Konwersja typów

 Nie u˙zywa si ˛e rzutowania w stylu ’C’!

 nie u˙zywa si ˛e void*

 unika´c konwersji typów Operatory rzutowania:

 static_cast - umo˙zliwia konwersj ˛e pomi ˛edzy

„spokrewnionymi” typami

 const_cast - znosi kwalifikator const

 reinterpret_cast - dowolna konwersja (tak jak w C)

 dynamic_cast - rzutowanie w gór ˛e hierarchii klas

double d = 3.2;

int i = static_cast<int>(d);

(14)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Instrukcje steruj ˛ ace

 Instrukcje warunkowe:

 if ... else ...

 switch

 Iteracja:

 for

 while

 do ... while

 Wołanie funkcji, rekurencja.

(15)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Przeci ˛ a˙zanie nazw funkcji

Funkcje mog ˛ a mie´c te same nazwy.

 bada si ˛e zgodno´s´c typów parametrów formalnych i aktualnych,

 znajdowania wła´sciwej wersji funkcji:

1. ´scisła zgodno´s´c;

2. promowanie w zakresie typów całkowitych(np.

bool → int );

3. standardowe konwersje (np. int → double );

4. konwersje zdefiniowane przez u˙zytkownika,

5. wielokropek w deklaracji funkcji (wiele argumentów).

 Je˙zeli znajdzie si ˛e dwie pasuj ˛ ace deklaracje: zgłaszany jest

bł ˛ ad kompilacji.

(16)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Przeci ˛ a˙zanie nazw (przykład)

Przykład:

void print(double);

void print(long);

print(1L);////print(long) print(1.0);////print(double) print(1);////bł ˛ ad - niezgodno´ s´ c

 nie mo˙zna przeci ˛ a˙za´c ze wzgl ˛edu na zwracan ˛ a warto´s´c;

 jest to ułatwienie notacyjne (to programista decyduje, ˙ze funkcje o tych samych nazwach wykonuj ˛ a podobne

operacje);

 stosowane np. dla ró˙znych konstruktorów.

 r ˛eczne usuwanie niejednoznaczno´sci: jawna konwersja

typu, np. static_cast .

(17)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Argumenty domy ´slne

Warto´s´c wstawiana, gdy nie dostarczono argumentu.

class Point { public:

Point(int x = 0, int y = 0);

private:

int x_;

int y_;

};

Point::Point(int x, int y) //Nie powtarza´ c arg. domy´ slnych : x_(x), y_(y) { }

Point p, r(1), s(1,2);

 Przeci ˛ a˙zanie - gdy ró˙zny kod.

 Argumenty domy´slne - gdy wiele argumentów, a niektóre

(18)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Preprocesor

Preprocesora nale˙zy u˙zywa´c do:

 doł ˛ aczania plików nagłówkowych;

 #include <nazwa>

 #include ¨nazwa¨

 zabezpieczania plików nagłówkowych przed wielokrotnym doł ˛ aczaniem;

 kompilacji warunkowej.

I do niczego wi ˛ecej!

(19)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Wykorzystanie biblioteki standardowej C

Wszystkie nagłówki z C zostały obudowane, aby mo˙zna było je wykorzystywa´c w C++. Zmieniono ich nazwy.

 <cassert> - asercje (niezmienniki);

 <cctype> - klasyfikacja znaków ( isalpha , isspace , ... );

 <cfloat> - ograniczenia reprezentacji zmiennopozycyjnej (np. DBL_MAX );

 <climits> - stałe ograniczaj ˛ ace zakresy typów wbudowanych (np. INT_MAX );

 <cmath> - funkcje matematyczne.

(20)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

» Typy wbudowane

» Czas ˙zycia obiektów

» Wykorzystywanie stałych

» Konwersja typów

» Instrukcje steruj ˛ace

» Przeci ˛a˙zanie nazw funkcji

» Przeci ˛a˙zanie nazw (przykład)

» Argumenty domy´slne

» Preprocesor

» Wykorzystanie biblioteki standardowej C

» Projektowanie modułów, rola testowania

Klasy i obiekty

Projektowanie modułów, rola testowania

 Moduł zawiera interfejs (nagłówek) oraz implementacj ˛e.

 U˙zywaj przestrzni nazw (jedna przestrze ´n nazw na bibliotek˛e - zbiór powi ˛ azanych modułów).

 Ka˙zdy moduł powinien mie´c swój test.

 Test powinien wykonywa´c si ˛e automatycznie (nie powinien komunikowa´c si ˛e z człowiekiem).

 Wykorzystywa´c asercje do testowania.

(21)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

» Programowanie obiektowe

» Funkcje składowe (metody)

» Konstruktor

» Destruktor

» Konstrukcja i destrukcja

» Tworzenie kopii obiektu

» Konstruktor kopiuj ˛acy

Programowanie obiektowe

 Wszystkie byty w programie s ˛ a obiektami.

 Program to zbiór obiektów, które si ˛e ze sob ˛ a komunikuj ˛ a.

 ka˙zdy obiekt posiada typ i to˙zsamo´s´c.

Mo˙zliwo´s´c definiowania typów przez u˙zytkownika:

 struct

 class

struct X {private: ... to to samo co

class X {... , ale konwencje ...

(22)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

» Programowanie obiektowe

» Funkcje składowe (metody)

» Konstruktor

» Destruktor

» Konstrukcja i destrukcja

» Tworzenie kopii obiektu

» Konstruktor kopiuj ˛acy

Funkcje składowe (metody)

 dost ˛ep do składowych

 niejawny argument - wska´znik this

 odwołania do this mo˙zna pomin ˛ a´c (skrócenie zapisu)

 metody stałe

 metody inline

Sekcje (kontrola dost ˛epu) - dziel ˛ a klas ˛e na interfejs i implementacj ˛e.

class Prostokat { public:

Prostokat(const Punkt& a, const Punkt& b);

private:

Punkt leftup;

Punkt rightdown;

};

(23)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

» Programowanie obiektowe

» Funkcje składowe (metody)

» Konstruktor

» Destruktor

» Konstrukcja i destrukcja

» Tworzenie kopii obiektu

» Konstruktor kopiuj ˛acy

Konstruktor

Specjalna metoda, która jest wołana, gdy jest tworzony obiekt danej klasy.

 zawsze wołany - programista nie zapomni zainicjowa´c składowych,

 mo˙zliwo´s´c inicjacji prywatnych składowych,

 elegancki zapis inicjacji obiektów.

struct Punkt { int x;

int y;

//konstruktor domy´ slny Punkt() { x = 0; y = 0; } //konstruktor

Punkt(int wx, int wy) { x = wx; y = wy; } };

Punkt p; //Tworzy punkt, wywołuje konstruktor domy´ slny

(24)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

» Programowanie obiektowe

» Funkcje składowe (metody)

» Konstruktor

» Destruktor

» Konstrukcja i destrukcja

» Tworzenie kopii obiektu

» Konstruktor kopiuj ˛acy

Destruktor

Je˙zeli obiekt klasy ma przydzielane zasoby, to powinno si ˛e je zwalnia´c.

Destruktor - metoda wołana gdy niszczony jest obiekt.

class PunktN { public:

PunktN(int n) {

wsp = new int[n];

for(int i=0;i<n;++i) wsp[i] = 0;

}

˜PunktN() { delete wsp; } private:

int* wsp;

};

(25)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

» Programowanie obiektowe

» Funkcje składowe (metody)

» Konstruktor

» Destruktor

» Konstrukcja i destrukcja

» Tworzenie kopii obiektu

» Konstruktor kopiuj ˛acy

Konstrukcja i destrukcja

tworzenie usuwanie

obiekt automatyczny (nazwany)

deklaracja (za ka˙z- dym razem)

opuszcza si ˛e blok obiekt na stercie operator new operator delete składowa (niesta-

tyczna)

tworzenie obiektu nadrz˛ednego

niszczenie obiektu nadrz˛ednego

lokalny obiekt sta- tyczny

deklaracja (za pierwszym razem!)

koniec programu obiekt globalny, skła-

dowa statyczna

pocz ˛ atek programu koniec programu obiekt tymczasowy podczas warto´scio-

wania wyra˙zenia

po doj´sciu do

ko ´nca wyra˙zenia

(26)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

» Programowanie obiektowe

» Funkcje składowe (metody)

» Konstruktor

» Destruktor

» Konstrukcja i destrukcja

» Tworzenie kopii obiektu

» Konstruktor kopiuj ˛acy

Tworzenie kopii obiektu

Tworzenie kopii:

 jawne Foo a; Foo b(a);

 jawne Foo c = a;

 przekazywanie wyniku przez warto´s´c;

Foo get();

Foo d = get();

 przekazywanie argumentu przez warto´s´c;

void put(Foo x);

put(a) ;

class Foo { public:

//Deklaracja konstruktora kopiuj ˛ acego Foo(const Foo&);

...

(27)

» Cel i zakres przedmiotu

Sprawy organizacyjne

Kilka podstawowych zasad dobrego stylu programowania

C++ jako j ˛ezyk strukturalny

Klasy i obiekty

» Programowanie obiektowe

» Funkcje składowe (metody)

» Konstruktor

» Destruktor

» Konstrukcja i destrukcja

» Tworzenie kopii obiektu

» Konstruktor kopiuj ˛acy

Konstruktor kopiuj ˛ acy

 Je˙zeli brak definicji konstruktora kopiuj ˛ acego, to zostanie on wygenerowany

 Obiekt mo˙ze by´c przekazywany przez warto´s´c, gdy konstruktor kopiuj ˛ acy b ˛edzie prywatny.

Zawsze definiowa´c (dla klas autonomicznych):

 konstruktor (lub konstruktory)

 konstruktor kopiuj ˛ acy

 destruktor

 operator przypisania (operator=)

Cytaty

Powiązane dokumenty

Matematyka dla Chemik´ ow

[r]

Dalsza eliminacja nie jest konieczna, bo otrzymana macierz jest ju˙z tr´ ojk atna , g´ orna... Powy˙zszy spos´ ob rozwi azania

Znale´z´c si l¸e wywieran¸a przez tak¸a mas¸e na mas¸e punktow¸a znajduj¸ac¸a si¸e w odleg lo´sci x od ´srodka kuli.. Znajd´z energi¸e potencjaln¸a tego

[r]

U2 Umiej˛etno´s´c korzystania z powłoki oraz dost˛epnych polece´n systemowych i umiej˛etno´s´c pisania skryptów U3 Umiej˛etno´s´c konstruowania opisu zale˙zno´sci

[r]

Odwracaj ˛ ac transformat ˛e za