Visual C++/CLI. Języki Programowania na Platformie.NET (część 2) Tomasz Goluch. goluch/
|
|
- Bożena Witkowska
- 9 lat temu
- Przeglądów:
Transkrypt
1 Języki Programowania na Platformie.NET (część 2) goluch/
2 Zalety i wady pozwala na uaktualnianie aplikacji i komponentów o właściwości platformy.net bez konieczności przepisywania kodu pozwala na wykorzystywanie natywnych i zarządzanych bibliotek w jednym projekcie, pliku źródłowym, klasie a nawet metodzie. pozwala pisać programy, które wymagają efektywnego przetwarzania danych binarnych oraz posiadają złożony interfejs graficzny (Windows Forms, WPF) wymaga zainstalowanej w systemie odpowiedniej wersji frameworka.net w praktyce nie współpracuje z Linuxem i innymi systemami operacyjnymi
3 Rodzaje kodu mieszany (mixed), /clr: moduł zawiera zarówno kod zarządzany jak i niezarządzany czysty (pure), /clr:pure: posiada zarówno natywne i zarządzane typy danych, lecz wyłącznie zarządzane funkcje bezpieczny (safe), /clr:safe: tylko zarządzany kod
4 Zalety /clr:pure większa wydajność (brak funkcji niezarządzanych nie potrzebne są przejścia z trybu zarządzanego w niezarządzany) kod istnieje wewnątrz AppDomain brak konieczności umieszczania modułów na dysku w celu kompilacji i uruchomienia pełne wsparcie dla reflection Jedna z wad: brak możliwości wywoływania takiego kodu przez kod niezarządzany. Pozwala jednak na współpracę z natywnymi bibliotekami przy pomocy mechanizmu PInvoke
5 Zalety /clr:safe większe bezpieczeństwo w niektórych sytuacjach wymagane (np. przez komponenty SQL) nieuchronnie rosnąca popularność w przyszłości Kompilacja kodu korzystającego z wywołań natywnych bibliotek za pomocą PInvoke zawsze się powiedzie, jednak w zależności od ustawień zabezpieczeń może powodować błędy wykonania.
6 PInvoke (Platform Invocation Service) PInvoke to zbior usług CLR odpowiedzialnych za: odnalezienie biblioteki z żądaną funkcją załadowanie biblioteki do pamięci odnalezienie adresu f-cji i jej wywołanie wraz z przekazaniem parametrów zbiór klas związanych z PInvoke zawarty jest w przestrzeni nazw System.Runtime.InteropServices
7 PInvoke (Platform Invocation Service) // PInvokeTest.cs using System; using System.Runtime.InteropServices; class PlatformInvokeTest { [DllImport("msvcrt.dll")] public static extern int puts(string c); [DllImport("msvcrt.dll")] internal static extern int _flushall(); public static void Main() { puts("test"); _flushall();
8 Definicja klasy zarządzanej przykład ref class A { public: void f() { ; A ^a; a->f(); a = nullptr;
9 Definicja klasy class_access ref class name modifier : inherit_access base_type {; class_access ref struct name modifier : inherit_access base_type {; class_access value class name modifier : inherit_access base_type {; class_access value struct name modifier : inherit_access base_type {; ref informuje kompilator, że klasa lub struktura będzie umieszczona na stercie i referencja do niej będzie używana jako parametr funkcji lub składowa w klasach, value informuje kompilator, że zawartość klasy będzie przekazywana do funkcji/przechowywana w zmiennych.
10 Definicja klasy c.d. class_access, tylko: public lub private inherit_access: public modifier to abstract lub sealed składowe klasy sa domyślnie prywatne, natomiast składowe struktur są domyślnie publiczne typ value nie może być typem bazowym fuckcje wirtualne w typach referencyjnych muszą być deklarowane w klasach pochodnych z użyciem słowa kluczowego override lub new (przeciążenie albo przysłonienie metody klasy bazowej) do dynamicznego tworzenia klas używamy gcnew
11 Zmienne na stosie a GC gdy deklarujemy zmienną na stosie (stacs semantics), kompilator wygeneruje kod tworzący obiekt na stercie za pomocą gcnew deklaracja argumentu do funkcji lub zwracanej wartości z użyciem stacs semantics sprawia, że funkcja nie może być używana przez inne języki kompilator nie generuje konstruktorów kopiujących dla typów referencyjnych, należy więc zdefiniować samodzielnie (C(C%){) kompilator również nie generuje domyślnego operatora przypisania, więc możliwość tworzenia obiektów z użyciem stacs semantics wymaga jego definicji (void operator=(c%){)
12 Zmienne na stosie a GC cd kompilator dostarcza jednoargumentowego operatora % konwertującego zmienną zadeklarowaną z użyciem stacs semantics do odpowiadającego typu referencyjnego nie można powyższej notacji używać w przypadku typów delegate, array, String
13 Zmienne na stosie a GC przykład ref class R { public: int i; R(){ void operator=(r% r) { // operator przypisania i = r.i; ; R(R% r) : i(r.i) { // konstuktor kopiujący void Test(R r) { // wymaga konstruktora kopiującego W przypadku typu value powyższe operatory i konstruktory są niedozwolone
14 Zmienne na stosie a GC przykład cd R r1; r1.i = 98; R r2(r1); // wymaga konstruktora kopiującego System::Console::WriteLine(r1.i); // 98 System::Console::WriteLine(r2.i); // 98 R ^ r3 = %r1; // % konwertuje obiekt ze stosu do typu // referencyjnego System::Console::WriteLine(r3->i); // 98 Test(r1); R r4, r5; r5.i = 13; r4 = r5; // wymaga zdefiniowania operatora przypisania System::Console::WriteLine(r4.i); // 13 R % r6 = r4;// tracking reference (nigdy null oraz nullptr) System::Console::WriteLine(r6.i); // 13
15 Destruktory class A { ~A() { // destruktor!a() { // finalizer ; druga z metod jest destruktorem wywoływanym przy pracy GC niebezpieczne jest odwoływanie się do zarządzanych danych w metodzie!a (mogły już zostać zwolnione, ponieważ garbage collector zwalnia zarządzane zasoby niedeterministycznie), metoda!a nie jest równoważna metodzie Finalize (automatyczne wywoływanie w całej hierarchii; dokumentacja clr) GC wywołuje Finalize, która wywołuje wiele destruktorów poprzedzonych!, znajdujących się w hierarchii dziedziczenia destruktor wywołując!a nie powoduje ciągu wywołań w klasach bazowych
16 Typowy schemat destruktor-finalizer ref class A { // destruktor (zwalnia wszystkie zasoby) ~A() { // zwolnij zarządzane zasoby // następnie wywołaj finalizer: this->!a(); ; // finalizer (zwalnia niezarządzane zasoby)!a() { // zwolnij niezarządzane zasoby
17 Kiedy wywoływany jest destruktor? jeśli obiekt został utworzony za pomocą stacs semantics i sterowanie opuściło dany zakres, gdy pojawi się wyjątek podczas tworzenia obiektu, jeśli obiekt jest składową, której destruktor został uruchomiony, gdy zostanie użyty operator delete na referencji do obiektu, gdy jawnie wywołamy destruktor.
18 Referencja % ref struct A { void Test(unsigned int &){ void Test2(unsigned int %){ unsigned int i; ; int main() { A a; a.i = 9; a.test(a.i); // C2664 a.test2(a.i); // OK unsigned int j = 0; a.test(j); // OK
19 Referencja % ref class MyClass { public: int i; int k; ; value struct MyStruct { ; int main() { MyClass ^ x = gcnew MyClass; MyClass ^% y = x; // adres referencji do obiektu int %ti = x->i; // element obiektu int j = 0; int %tj = j; // obiekt na stosie int * pi = new int[2]; int % ti2 = pi[0]; // obiekt na stercie \Cpp int *% tpi = pi; // wskaźnik \Cpp MyStruct ^ x2 = gcnew MyStruct; MyStruct ^% y2 = x2;
20 Referencja % przypomina standardową referencję C++, referencja % może być deklarowana wyłącznie na stosie, wskazuje na obiekty lub składowe,
21 Uchwyt wskaźniki * i referencje & nie mogą być użyte w kontekście sterty zarządzanej przez GC używamy ^ w celu przechowywania uchwytów/referencji do całych obiektów; GC może przesuwać takie obiekty ref class MyClass { public: MyClass() { void Test() { System::Console::WriteLine("hello"); ; int main() { MyClass ^ p1 = gcnew MyClass; p1->test(); MyClass ^ p2; p2 = p1; p1 = nullptr; p2->test();
22 Odwołania do zarządzanych typów z niezarządzanego kodu #include <vcclr.h> using namespace System; class CppClass { public: gcroot<string^> str; ; CppClass() { // can use str as // if it were String^ int main() { CppClass c; c.str = gcnew String("hello"); Console::WriteLine( c.str ); // no cast required
23 Słowa kluczowe abstract i sealed funkcja abstakcyjna = pusta funkcja wirtualna słowo kluczowe abstract również może być używane przy kompilacji standardowej ref class X abstract { public: virtual void f() {; virtual void g() abstract; ; sealed w odniesieniu do klasy: nie może być klasą bazową dla żadnej innej; w odniesieniu do funkcji: nie może być przesłaniana w klasie bazowej, błąd C3246 (przykład 2):
24 przestrzeń nazw cli można dołączyć poprzez using namespace cli; (automatycznie włączona podczas kompilacji /clr) definiuje słowa kluczowe: array pin_ptr interior_ptr safe_cast
25 Dynamiczne tablice [qualifiers] [cli::]array<[qualifiers]type1[, dimension]>^var = gcnew name [cli::]array<type2[, dimension]>(val[,val...]) dimension liczba wymiarów tablicy, domyślnie 1, maksymalnie 32 val liczba elementów tablicy (dla każdego wymiaru) type1 typ elementów tablicy type2 typ elementów inicjalizujących tablicę (zwykle = type1, a w przeciwnym wypadku musi być możliwa konwersja) name nazwa zmiennej tablice są zarządzanymi obiektami brak arytmetyki na indeksach
26 Jednowymiarowa tablica ref class A { public: int i; ; array<a^>^ f() { int i; array<a^>^ ar = gcnew array<a^>(5); for (i = 0; i < 5; i++) { ar[i] = gcnew A; ar[i]->i = i; return ar;
27 Tablica wielowymiarowa array<int32, 2>^ Test1() { int i, j; array< Int32,2 >^ local = gcnew array< Int32,2 >( ARRAY_SIZE, ARRAY_SIZE); for (i = 0 ; i < ARRAY_SIZE ; i++) for (j = 0 ; j < ARRAY_SIZE ; j++) local[i,j] = i + 10; return local;
28 typedef dla zarządzanej tablicy using namespace System; ref class G {; typedef array<array<g^>^> some_array; int main() { some_array ^ MyArr = gcnew some_array (10); Tablice tablic (przykład 3):
29 Zarządzane tablice jako parametry szablonu using namespace System; template <class T> class TA { public: array<array<t>^>^ f() { array<array<t>^>^ larr = gcnew array<array<t>^>(10); return larr; ; int main() { int retval = 0; TA<array<array<Int32>^>^>* ta1 = new TA<array<array<Int32>^>^>(); array<array<array<array<int32>^>^>^>^ larr = ta1->f(); retval += larr->length - 10; Console::WriteLine("Return Code: {0", retval);
30 Sortowanie zarządzanej tablicy zarządzane tablice dziedziczą zachowanie od klasy bazowej przykład to sortowanie tablicy: Array::Sort(tab); elementy tablicy muszą implementować metodę IComparable::CompareTo
31 Sortowanie zarządzanej tablicy przykład value struct Element : public IComparable { int v1, v2; int CompareTo(Object^ obj) { Element^ o = dynamic_cast<element^>(obj); if (o) { int thisaverage = (v1 + v2) / 2; int thataverage = (o->v1 + o->v2) / 2; if (thisaverage < thataverage) return -1; else if (thisaverage > thataverage) return 1; return 0; else throw new ArgumentException("o must be of type Element "); ; int main() { array<element>^ a = gcnew array<element>(10);... Array::Sort( a );
32 interior ptr [cli::]interior_ptr<cv_qualifier type> var = &initializer; Przykład: using namespace System; ref class MyClass { public: int data; ; int main() { MyClass ^ h_myclass = gcnew MyClass; h_myclass->data = 1; Console::WriteLine(h_MyClass->data); interior_ptr<int> p = &(h_myclass->data); *p = 2; Console::WriteLine(h_MyClass->data); // alternatywnie: interior_ptr<myclass ^> p2 = &h_myclass; (*p2)->data = 3; Console::WriteLine((*p2)->data);
33 pin ptr [cli::]pin_ptr<cv_qualifier type> var = &initializer; używanie podobne do interior_ptr, lecz uniemożliwia GC przesuwanie wskazywanego obiektu, używamy, gdy chcemy przekazać adres zarządzanego zasobu do niezarządzanego kodu mamy gwarancje, ze adres zarządzanego obiektu znajdującego się na (zarządzanej) stercie nie ulegnie zmianie związanie elementu obiektu ma efekt związania całego obiektu jeśli wartość wskaźnika ulegnie zmianie, to możliwe jest przesuwanie poprzedniego obiektu przez GC jeśli sterowanie zostanie przekazane poza blok z deklaracją takiego wskaźnika, to również GC może przesuwać dane
34 delegate [dostęp] delegate deklaracja_funkcji public delegate void ExDel(int i); ref class A { public: void f(int i) {... void g(int i) {... ; int main() { A^ a = gcnew A; ExDel^ d; if (d) d(7); d = gcnew ExDel(a, &A::f); d(8); DelInst += gcnew ExDel(a, &A::g);
35 Szablony a typy generyczne szablony są statyczne, tzn. konkretne instancje typów tworzone są podczas kompilacji kodu, instancje dla szablonów tworzone są w trakcie wykonania kodu w konsekwencji nie można tworzyć konkretnych instancji szablonów (specjalizacji) mając dostęp do skompilowanego modułu, a takiego ograniczenia nie ma w przypadku typów generycznych
36 Typy generyczne przykład using namespace System; generic <typename ItemType> ref struct Stack { // ItemType may be used as a type here void Add(ItemType item) { ; generic <typename KeyType, typename ValueType> ref class HashTable {; // The keyword class may be used instead of typename: generic <class ListItem> ref class List {; int main() { HashTable<int, Decimal>^ g1=gcnew HashTable<int, Decimal>();
37 Opakowania kodu ANSI C++ Sposobem na użycie niezarządzanego kodu C++z poziomu VB lub C#jest napisanie zarządzanego opakowania dla niezarządzanej klasy. Jeśli klasa niezarządzana nosi nazwę UClass, natomiast jej zarządzane opakowanie nazwiemy MClass, to wykonujemy następujące kroki: 1 w klasie MClass deklarujemy zmienną typu UClass *; 2 dla każdego konstruktora w UClass deklarujemy odpowiedni konstruktor w MClass, który korzystając z operatora new odwoła się do odpowiedniego konstruktora w UClass; 3 definiujemy destruktor w MClass, który usunie obiekt klasy UClass korzystając z operatora delete; 4 dla każdej funkcji składowej w UClass definiujemy funkcję w MClass, która jedynie wykonuje wywołanie funkcji w UClass, dokonując ew. koniecznych konwersji parametrów.
38 Opakowania kodu ANSI C++cd Które funkcje należy opakować : jeśli funkcja w niezarządzanej klasie jest prywatna, to nie ma potrzeby definiowania odpowieniej funkcji w klasie zarządzanej; nie ma konieczności definiowania opakowań dla funkcji, które nie będą wykorzystywane.
39 Opakowania kodu ANSI C++, przykład class UA { public: int f(int i) { return i+1; ; ref class A { private: UA *ua; ; public: A() { ua = new UA(); int f( int *i) { return ua->f(i); ~A() { delete ua; ;
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Instrukcja laboratoryjna cz.3
Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:
Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Wykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Materiały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Programowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Szablony. Szablony funkcji
Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu
Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz
Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie
Zaawansowane programowanie w języku C++ Klasy w C++
Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np
Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami
2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).
Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,
Funkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego.
Funkcje wirtualne W C++ polimorfizm jest zrealizowany w dwa sposoby: na etapie kompilacji i na etapie wykonania. Na etapie kompilacji polimorfizm jest zrealizowany poprzez przeciążenie funkcji i operatorów.
Wykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
.NET Klasy, obiekty. ciąg dalszy
.NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
Język C++ Programowanie obiektowe
Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop. 2016 Spis treści Spis rysunków 11 Spis tabel 13 Przedmowa 15 Wprowadzenie 17 Podziękowania 27 O autorach 29 1 Wprowadzenie
Programowanie obiektowe w C++ Wykład 12
Programowanie obiektowe w C++ Wykład 12 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) 1 / 22 Zakresowe pętle for double tab[5] {1.12,2.23,3.33,4.12,5.22 for(double x: tab)
Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej
Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,
Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Programowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi
EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi 1. Napisz wskaźnik do funkcji fun tak zdeklarowanej: T* fun( int, double const& ) const; definicja wskaźnika musi być precyzyjna, inaczej
2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Szablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Abstrakcyjny typ danych
Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Przeciążanie operatorów Słowo
ZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Polimorfizm, metody wirtualne i klasy abstrakcyjne
Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,
Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Java - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład V - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Programowanie obiektowe Dziedziczenie (inheritance) - mechanizm
Dziedziczenie jednobazowe, poliformizm
Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie
Programowanie w środowiskach graficznych. Wykład 3 Język C#
Programowanie w środowiskach graficznych Wykład 3 Język C# 1 Zagadnienia 1. Wprowadzenie 2. Przestrzenie nazw 3. Typy, parametry, konwersje 4. Klasy 5. Instrukcje sterujące 6. Właściwości 7. Interfejsy,
Dziedziczenie. dr Jarosław Skaruz
Dziedziczenie dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com Dziedziczenie specjalizacja Dziedziczenie generalizacja Generalizacja-specjalizacja jest takim związkiem pomiędzy klasami,
Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne
Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne Przeciążenie funkcji polega na użyciu funkcji z tą samą nazwą, które mają różne listy argumentów(różne typy, różna ilość lub to i inne).
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY
Inicjalizacja obiektu KONSTRUKTORY Inicjalizacja Przyczyną wielu błędów w programach jest nieprawidłowe zainicjalizowanie zmiennych na początku działania programu. Obiekt zawiera z reguły szereg pól ich
Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki
Język C# pętle, sterowanie, wyjątki Język C# pętle Pętle: while ( ) do { while ( ); for ( ; ; ) foreach ( in
Wprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Obsługa wyjątków. Język C++ WW12
Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try
Programowanie obiektowe
Programowanie obiektowe Wykład 4 Marcin Młotkowski 15 marca 2018 Plan wykładu 1 2 3 Klasa podstawowa Własne kolekcje Obiekty i wartości Marcin Młotkowski Programowanie obiektowe 141 / 224 Z czego składa
Wprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
TEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Klasy cd. Struktury Interfejsy Wyjątki
Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury
Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.
.NET Klasy, obiekty Klasa i obiekt Każdy obiektowy język programowania daje programiście możliwość tworzenia nowych typów danych. Nowy typ danych definiuje się poprzez zdefiniowanie klasy. Co to jest klasa?
Programowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Szablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Operator przypisania. Jest czym innym niż konstruktor kopiujący!
Operator przypisania Jest czym innym niż konstruktor kopiujący! Domyślnie jest zdefiniowany jako przypisanie składowa po składowej (zatem niekoniecznie bajt po bajcie). Dla klasy X definiuje się jako X&
Dziedziczenie. Tomasz Borzyszkowski
Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.
Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
PARADYGMATY PROGRAMOWANIA Wykład 2
PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych
Programowanie obiektowe
Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka
Wstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Programowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Zaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13
Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods
Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Przydzielanie pamięci Poniżej przedstawiono w C++ dwie klasy obrazujące sposób rezerwacji pamięci. class Osoba char imie[30];
Języki i techniki programowania Ćwiczenia 3 Dziedziczenie
Języki i techniki programowania Ćwiczenia 3 Dziedziczenie Klasa abstrakcyjna Autor: Marcin Orchel Klasa abstrakcyjna to taka, że nie możemy tworzyć obiektów tej klasy, możemy jednak dziedziczyć po tej
Lab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Projektowanie obiektowe. Roman Simiński Polimorfizm
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Polimorfizm Koncepcja polimorfizmu Słowo polimorfizm pochodzi od dwóch greckich słów: poly czyli wiele, morphos czyli
Multimedia JAVA. Historia
Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
Microsoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
Programowanie 2. Język C++. Wykład 9.
9.1 Ukrywanie metod, metody nadpisane... 1 9.2 Metody wirtualne, wirtualny destruktor... 2 9.3 Metody czysto wirtualne... 6 9.4 Klasy abstrakcyjne... 7 9.5 Wielodziedziczenie... 9 9.1 Ukrywanie metod,
Dziedziczenie. Ogólna postać dziedziczenia klas:
Dziedziczenie Ogólna postać dziedziczenia klas: class nazwa_clasy_pochodnej : specyfikator_dostępu nazwa_clasy_bazowej specyfikator_dostępu : public private protected Specyfikator dostępu definiuje, w
Definicje klas i obiektów. Tomasz Borzyszkowski
Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy
Zaawansowane programowanie w C++ (PCP)
Wykład 7 - sprytne wskaźniki. 20 kwietnia 2007 Potrzeba współdzielenia kodu źródłowego Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania największego elementu) Szablony mechanizm
EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++
IMIĘ i NAZWISKO: przykładowe odpowiedzi NR: 0 EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++ 1. Napisz precyzyjnie co to jest ptr jeśli: const * const Foo ptr; ptr to stały wskaźnik do stałego obiektu typu Foo
Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 14 Katarzyna Grzelak 3 czerwca 2019 K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27 Na ostatnim wykładzie: Konstruktor standardowy (domyślny) to taki, który nie ma żadnych argumentów
1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!
Temat: Klasy typu sealed. Klasy abstrakcyjne. Deklaracja i implementacja interfejsu. Typ Object i operatory is oraz as. Czas ycia obiektu. Destruktory. 1. Klasa typu sealed Przykład 1 Klasa typu sealed
PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty