Zaawansowane programowanie w C++ (PCP)

Transkrypt

Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP)
Wykład 1 - sprawy organizacyjne
i wprowadzenie.
dr inż. Robert Nowak
- p. 1/27
Cel i zakres przedmiotu
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Umiejetność
˛
programowania to umiejetność
˛
rozwiazania
˛
problemów przy pomocy komputera.
Czy ten problem może być rozwiazany
˛
przy pomocy
komputera?
Czy ten problem powinien być rozwiazany
˛
przy pomocy
komputera?
Komputer = „głupi automat”.
Klasy i obiekty
zapoznanie słuchaczy z zagadnieniami tworzenia
oprogramowania w C++
współcześnie stosowane techniki i biblioteki
Zakładana jest znajomość programowania strukturalnego
i obiektowego oraz praktyczna znajomość jezyka
˛
C++.
- p. 2/27
Podstawowe dane o przedmiocie
» Cel i zakres przedmiotu
Sprawy organizacyjne
» Podstawowe dane o
przedmiocie
» Zajecia
˛
» Literatura
Miejsce spotkań:
Piatki
˛ 815 − 1000 , sala N7 (wykład)
Piatki
˛ 815 − 1000 , sala N102 (laboratorium)
» Zaliczenie przedmiotu
» Wymaganie oprogramowanie
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Prowadzacy:
˛
dr inż. Robert Nowak, Zakład Sztucznej Inteligencji, Wydział
Elektroniki i Technik Informacyjnych, Politechnika Warszawska.
Klasy i obiekty
e-mail:
[email protected]
strona przedmiotu:
http://staff.elka.pw.edu.pl/˜rnowak2/pcp2007L
- p. 3/27
Zajecia
˛
» Cel i zakres przedmiotu
Sprawy organizacyjne
» Podstawowe dane o
przedmiocie
» Zajecia
˛
» Literatura
» Zaliczenie przedmiotu
» Wymaganie oprogramowanie
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Klasy autonomiczne, cykl życia obiektów.
Agregacja i dziedziczenie, polimorfizm, klasy abstrakcyjne.
Laboratorium 1: funkcje wirtualne, hierarchia klas.
Wzorce projektowe.
Obsługa błedów,
˛
mechanizm wyjatków,
˛
sprytne wskaźniki.
Laboratorium 2: wyjatki.
˛ Rozdanie zadań projektowych.
Rola projektowania i testowania, repozytorium.
Szablony, wstep
˛ do biblioteki standardowej, strumienie.
Biblioteka standardowa: kontenery, algorytmy.
Laboratorium 4: Kolokwium.
Laboratorium 5: realizacja projektu
Laboratorium 6: realizacja projektu
Aplikacje wielowatkowe,
˛
synchronizacja, boost::thread.
Laboratorium 7: aplikacje wielowatkowe.
˛
- p. 4/27
Literatura
» Cel i zakres przedmiotu
Sprawy organizacyjne
» Podstawowe dane o
przedmiocie
» Zajecia
˛
» Literatura
» Zaliczenie przedmiotu
» Wymaganie oprogramowanie
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
Bjarne Stroustrup, Jezyk
˛
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, Jȩzyk C++. Standardy
kodowania. 101 zasad, wytycznych i zalecanych praktyk,
Helion, 2005.
B. Karlsson, Wiȩcej niż C++. Wprowadzenie do bibliotek
Boost, Helion, 2006.
S. Meyers, 50 efektywnych sposobów na udoskonalenie
Twoich programów, Helion, 2003.
- p. 5/27
Zaliczenie przedmiotu
» Cel i zakres przedmiotu
Sprawy organizacyjne
» Podstawowe dane o
przedmiocie
» Zajecia
˛
» Literatura
kolokwium
Podział punktów: ćwiczeń laboratoryjnych
projektów
0 – 30pkt
0 – 40pkt
0 – 30pkt
» Zaliczenie przedmiotu
» Wymaganie oprogramowanie
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
Warunkiem zaliczenia jest uzyskanie przynajmniej 51 pkt.
91 – 100 punktów
81 – 90 pkt.
71 – 80 pkt.
Ocena:
61 – 70 pkt.
51 – 60 pkt.
0 – 50 pkt.
ocena 5
ocena 4 21
ocena 4
ocena 3 21
ocena 3
ocena 2
- p. 6/27
Wymaganie oprogramowanie
» Cel i zakres przedmiotu
Sprawy organizacyjne
» Podstawowe dane o
przedmiocie
» Zajecia
˛
» Literatura
» Zaliczenie przedmiotu
» Wymaganie oprogramowanie
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
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
- p. 7/27
Sposób, aby zostać dobrym programista˛
Czytać kod innych.
Kilka podstawowych zasad
Myśleć!
dobrego stylu programowania
» Sposób, aby zostać dobrym
programista˛
» zasady dobrego stylu
programowania
Programować.
» Cel i zakres przedmiotu
Sprawy organizacyjne
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
- p. 8/27
zasady dobrego stylu programowania
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
» Sposób, aby zostać dobrym
programista˛
» zasady dobrego stylu
programowania
C++ jako jezyk
˛
strukturalny
Wykrywanie błedów
˛
w programach:
Wykorzystywać kompilator.
Zawsze doprowadzić do czystej kompilacji (bez żadnych
ostrzeżeń) na najwyższym poziomie.
Rozumieć każde ostrzeżenie.
Klasy i obiekty
Stosować standardy kodowania:
pliki źródłowe,
nazewnictwo,
formatowanie kodu źródłowego,
stosować konsekwentnie ten sam styl kodowania.
- p. 9/27
Typy wbudowane
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
logiczny: bool, true, false
całkowite: int, long, ...
rzeczywiste: double, ...
znakowe: char, wchar_t
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
typ wyliczeniowy
enum Kolory { RED = 1, GREEN = 2, BLUE = 4};
void - oznacza brak informacji
typy wskaźnikowe
typy tablicowe
typy referencyjne
typedef
- p. 10/27
Czas życia obiektów
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
l-wartość: odnosi sie˛ do „czegoś” co istnieje w pamieci.
˛
Automatyczne:
tworzone w chwili napotkania definicji
sa˛ niszczone w momencie wyjścia z zasiegu
˛
(np. z bloku)
definicja powinna być wtedy gdy można zainicjować
Statyczne (globalne i zadeklarowane jako static)
tworzone tylko raz
sa˛ niszczone po zakończeniu programu
dynamiczne (tworzone na stercie)
operatory new i delete (uwaga! oddzielna wersja dla
tablic),
programista steruje czasem życia obiektów (tworzy je i
usuwa),
Nie używamy funkcji z <stdlib.h>, czyli malloc, free
itp.
- p. 11/27
Wykorzystywanie stałych
» Cel i zakres przedmiotu
Stałe definiuje sie˛ za pomoca˛ słowa kluczowego const.
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
const int NUM = 34;
const int WZROST[] = { 174, 185, 193, 168 };
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
unika sie˛ „magicznych” liczb w kodzie,
pokazuje sie,
˛ że funkcja nie zmienia argumentów,
pozwala sie˛ kompilatorowi na optymalizacje.
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
Systematycznie korzystać ze stałych symbolicznych!
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
int i = 2, j = 3;
const int* p = &i;
p = &j;
*p = 4;
int* const q = &i;
q = &j;
*q = 4;
- p. 12/27
Konwersja typów
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
Nie używa sie˛ rzutowania w stylu ’C’!
nie używa sie˛ void*
unikać konwersji typów
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
Operatory rzutowania:
static_cast - umożliwia konwersje
˛ pomiedzy
˛
„spokrewnionymi” typami
const_cast - znosi kwalifikator const
reinterpret_cast - dowolna konwersja (tak jak w C)
dynamic_cast - rzutowanie w góre
˛ hierarchii klas
double d = 3.2;
int i = static_cast<int>(d);
- p. 13/27
Instrukcje sterujace
˛
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
Instrukcje warunkowe:
if ... else ...
switch
Iteracja:
for
while
do ... while
Wołanie funkcji, rekurencja.
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
- p. 14/27
Przeciażanie
˛
nazw funkcji
Funkcje moga˛ mieć te same nazwy.
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
bada sie˛ zgodność typów parametrów formalnych i
aktualnych,
znajdowania właściwej wersji funkcji:
1. ścisła zgodność;
2. promowanie w zakresie typów całkowitych(np.
bool→int );
3. standardowe konwersje (np. int → double);
4. konwersje zdefiniowane przez użytkownika,
5. wielokropek w deklaracji funkcji (wiele argumentów).
Jeżeli znajdzie sie˛ dwie pasujace
˛ deklaracje: zgłaszany jest
bład
˛ kompilacji.
- p. 15/27
Przeciażanie
˛
nazw (przykład)
» Cel i zakres przedmiotu
Przykład:
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
void print(double);
void print(long);
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
print(1L);////print(long)
print(1.0);////print(double)
print(1);////bład
˛ - niezgodność
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
nie można przeciażać
˛
ze wzgledu
˛
na zwracana˛ wartość;
jest to ułatwienie notacyjne (to programista decyduje, że
funkcje o tych samych nazwach wykonuja˛ podobne
operacje);
stosowane np. dla różnych konstruktorów.
reczne
˛
usuwanie niejednoznaczności: jawna konwersja
typu, np. static_cast.
- p. 16/27
Argumenty domyślne
» Cel i zakres przedmiotu
Wartość wstawiana, gdy nie dostarczono argumentu.
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
class Point {
public:
Point(int x = 0, int y = 0);
private:
int x_;
int y_;
};
Point::Point(int x, int y) //Nie powtarzać arg. domyślnych
: x_(x), y_(y) { }
Point p, r(1), s(1,2);
Przeciażanie
˛
- gdy różny kod.
Argumenty domyślne - gdy wiele argumentów, a niektóre
maja˛ typowe wartości.
Domyślne moga˛ być tylko końcowe argumenty.
- p. 17/27
Preprocesor
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
Preprocesora należy używać 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 wiecej!
˛
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
- p. 18/27
Wykorzystanie biblioteki standardowej C
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Wszystkie nagłówki z C zostały obudowane, aby można było je
wykorzystywać w C++. Zmieniono ich nazwy.
<cassert> - asercje (niezmienniki);
<cctype> - klasyfikacja znaków (isalpha, isspace, ... );
<cfloat> - ograniczenia reprezentacji zmiennopozycyjnej
(np. DBL_MAX);
<climits> - stałe ograniczajace
˛ zakresy typów
wbudowanych (np. INT_MAX);
<cmath> - funkcje matematyczne.
Klasy i obiekty
- p. 19/27
Projektowanie modułów, rola testowania
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
» Typy wbudowane
» Czas życia obiektów
» Wykorzystywanie stałych
» Konwersja typów
» Instrukcje sterujace
˛
» Przeciażanie
˛
nazw funkcji
» Przeciażanie
˛
nazw (przykład)
Moduł zawiera interfejs (nagłówek) oraz implementacje.
˛
Używaj przestrzni nazw (jedna przestrzeń nazw na
bibliotek˛e - zbiór powiazanych
˛
modułów).
Każdy moduł powinien mieć swój test.
Test powinien wykonywać sie˛ automatycznie (nie powinien
komunikować sie˛ z człowiekiem).
Wykorzystywać asercje do testowania.
» Argumenty domyślne
» Preprocesor
» Wykorzystanie biblioteki
standardowej C
» Projektowanie modułów, rola
testowania
Klasy i obiekty
- p. 20/27
Programowanie obiektowe
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Wszystkie byty w programie sa˛ obiektami.
Program to zbiór obiektów, które sie˛ ze soba˛ komunikuja.
˛
każdy obiekt posiada typ i tożsamość.
Klasy i obiekty
» Programowanie obiektowe
» Funkcje składowe (metody)
» Konstruktor
» Destruktor
» Konstrukcja i destrukcja
» Tworzenie kopii obiektu
Możliwość definiowania typów przez użytkownika:
struct
class
» Konstruktor kopiujacy
˛
struct X {private: ... to to samo co
class X {..., ale konwencje ...
- p. 21/27
Funkcje składowe (metody)
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
» Programowanie obiektowe
dostep
˛ do składowych
niejawny argument - wskaźnik this
odwołania do this można pominać
˛ (skrócenie zapisu)
metody stałe
metody inline
» Funkcje składowe (metody)
» Konstruktor
» Destruktor
» Konstrukcja i destrukcja
» Tworzenie kopii obiektu
» Konstruktor kopiujacy
˛
Sekcje (kontrola dostepu)
˛
- dziela˛ klase˛ na interfejs i
implementacje.
˛
class Prostokat {
public:
Prostokat(const Punkt& a, const Punkt& b);
private:
Punkt leftup;
Punkt rightdown;
};
- p. 22/27
Konstruktor
Specjalna metoda, która jest wołana, gdy jest tworzony
obiekt danej klasy.
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
» Programowanie obiektowe
» Funkcje składowe (metody)
» Konstruktor
» Destruktor
zawsze wołany - programista nie zapomni zainicjować
składowych,
możliwość inicjacji prywatnych składowych,
elegancki zapis inicjacji obiektów.
» Konstrukcja i destrukcja
» Tworzenie kopii obiektu
» Konstruktor kopiujacy
˛
struct Punkt {
int x;
int y;
//konstruktor domyślny
Punkt() { x = 0; y = 0; }
//konstruktor
Punkt(int wx, int wy) { x = wx; y = wy; }
};
Punkt p; //Tworzy punkt, wywołuje konstruktor domyślny
Punkt r(1,2); //Tworzy punkt o współrz˛
ednych x == 1, y == 2
- p. 23/27
Punkt* pr = new Punkt(1,2); //To samo, ale obiekt na stercie
delete pr;
Destruktor
» Cel i zakres przedmiotu
Sprawy organizacyjne
Jeżeli obiekt klasy ma przydzielane zasoby, to powinno sie˛ je
zwalniać.
Kilka podstawowych zasad
dobrego stylu programowania
Destruktor - metoda wołana gdy niszczony jest obiekt.
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
» Programowanie obiektowe
» Funkcje składowe (metody)
» Konstruktor
» Destruktor
» Konstrukcja i destrukcja
» Tworzenie kopii obiektu
» Konstruktor kopiujacy
˛
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;
};
- p. 24/27
Konstrukcja i destrukcja
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
» Programowanie obiektowe
» Funkcje składowe (metody)
» Konstruktor
» Destruktor
» Konstrukcja i destrukcja
» Tworzenie kopii obiektu
» Konstruktor kopiujacy
˛
obiekt automatyczny
(nazwany)
obiekt na stercie
składowa
(niestatyczna)
lokalny obiekt statyczny
obiekt globalny, składowa statyczna
obiekt tymczasowy
tworzenie
deklaracja (za każdym razem)
operator new
tworzenie obiektu
nadrz˛ednego
deklaracja
(za
pierwszym razem!)
poczatek
˛
programu
usuwanie
opuszcza sie˛ blok
podczas wartościowania wyrażenia
po
dojściu
do
końca wyrażenia
operator delete
niszczenie obiektu
nadrz˛ednego
koniec programu
koniec programu
- p. 25/27
Tworzenie kopii obiektu
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Klasy i obiekty
» Programowanie obiektowe
» Funkcje składowe (metody)
» Konstruktor
» Destruktor
» Konstrukcja i destrukcja
» Tworzenie kopii obiektu
» Konstruktor kopiujacy
˛
Tworzenie kopii:
jawne Foo a; Foo b(a);
jawne Foo c = a;
przekazywanie wyniku przez wartość;
Foo get();
Foo d = get();
przekazywanie argumentu przez wartość;
void put(Foo x);
put(a);
class Foo {
public:
//Deklaracja konstruktora kopiujacego
˛
Foo(const Foo&);
...
};
- p. 26/27
Konstruktor kopiujacy
˛
» Cel i zakres przedmiotu
Sprawy organizacyjne
Kilka podstawowych zasad
dobrego stylu programowania
C++ jako jezyk
˛
strukturalny
Jeżeli brak definicji konstruktora kopiujacego,
˛
to zostanie on
wygenerowany
Obiekt może być przekazywany przez wartość, gdy
konstruktor kopiujacy
˛ bedzie
˛
prywatny.
Klasy i obiekty
» Programowanie obiektowe
» Funkcje składowe (metody)
» Konstruktor
» Destruktor
» Konstrukcja i destrukcja
» Tworzenie kopii obiektu
» Konstruktor kopiujacy
˛
Zawsze definiować (dla klas autonomicznych):
konstruktor (lub konstruktory)
konstruktor kopiujacy
˛
destruktor
operator przypisania (operator=)
- p. 27/27

Podobne dokumenty