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

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

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

TEMAT : KLASY POLIMORFIZM

Tbli Tablice obiektów biktó są tworzone dokładnie d tak samo, jak i tablice, składające się z elementów innego typu

Zwracanie obiektu. Funkcja może zwracać obiekty: #include"stdafx.h #include <iostream> using namespace std; class samp { inti; public:

Plik klasy. h deklaracje klas

Programowanie w języku C++

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

Wykład :37 PP2_W9

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

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

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

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

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

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

Projektowanie klas c.d. Projektowanie klas przykład

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

Techniki Programowania wskaźniki 2

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

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

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

Informacja o programowaniu w c++ Dr Maciej Bobrowski

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

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

I - Microsoft Visual Studio C++

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

Polimorfizm w pigułce

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:

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

Wstęp do Programowania 2

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

Programowanie i struktury danych

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

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Przeciążenie operatorów

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

Programowanie Obiektowew języku C++ Zadania L4

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

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

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

Wstęp do programowania. Dariusz Wardecki, wyk. X

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

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Techniki Programowania wskaźniki

Część 4 życie programu

dr inż. Jarosław Forenc

Listy i funkcje zaprzyjaźnione w C++

Programowanie obiektowe W3

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

Jak Windows zarządza pamięcią?

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

Wstęp do programowania

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

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

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

Operatory na rzecz typu TString

Język C++ wykład VIII

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

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

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project

Podstawy Programowania Obiektowego

Wstęp do Programowania 2

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

Alokacja pamięci dla tablicy dwuwymiarowej

Programowanie Procedurale

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

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

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

Programowanie obiektowe

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

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

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

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

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

Programowanie w języku C++

Podstawy programowania w języku C++

Praca semestralna CENTRUM EDUKACJI AKADEMIA SUKCESU

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

Listy powiązane zorientowane obiektowo

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Pola i metody statyczne

C++ wprowadzanie zmiennych

Programowanie obiektowe i C++ dla matematyków

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

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

Technologie cyfrowe semestr letni 2018/2019

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

Mechanizm dziedziczenia

Kurs programowania. Wykład 9. Wojciech Macyna

Operacje wejścia/wyjścia (odsłona druga) - pliki

tablica: dane_liczbowe

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

Programowanie komputerowe. Zajęcia 1

Transkrypt:

// W8_3.cpp : Defines the entry point for the console application. // Przeciazenie operatorow new, delete // Przeciazenie globalne: przeciazone operatory new, delete // dzialaja dla danych dowolnych // Przeciazenie lokalne: przeciazone operatory new, delete // dzialaja tylko dla danej klasy #include "stdafx.h" #include <iostream> #include "windows.h" using namespace std; #define PRZECIAZENIE_GLOBALNE #ifndef PRZECIAZENIE_GLOBALNE #define PRZECIAZENIE_LOKALNE class myclass int i; public: myclass() i = 0; cout << "konstruktor\n"; myclass(int ii) i = ii; cout << "konstruktor sparam.\n"; ~myclass() cout << "destruktor\n"; void set_i(int ii) i = ii; void disp() cout << i << endl; #ifdef PRZECIAZENIE_LOKALNE void * operator new [] (size_t ndim); //alokuje pamiec dla tablicy obiektow void * operator new (size_t ndim); //alokuje pamiec dla obiektu i prowadzi inicjowanie void operator delete [](void *pob); //zwalnia tablice obiektow void operator delete (void *pob); //zwalnia obiekt ; #ifdef PRZECIAZENIE_LOKALNE void * myclass::operator new [](size_t ndim) Alokuje pamiec dla tablicy obiektow ndim - rozmiar tablicy w bajtach

wywolanie: ptr_obj = new class_obj [ilosc elementow tablicy]; void * myclass::operator new (size_t ndim) Alokuje pamiec dla obiekta klasy obj_class ndim - rozmiar obiektu w bajtach wywolanie: ptr_obj = new class_obj (parametry_do_konstruktora_sparametryzowanego); ptr_obj = new class_obj; (konstruktor bez parametrow) void myclass::operator delete [](void *pob) Zwolnienie pamieci dla tablicy obiektow, alokowanej przez przeciazony operator new... [] =============

void myclass::operator delete (void *pob) Zwolnienie pamieci dla obiekta, alokowanego przez przeciazony operator new... () ============= #ifdef PRZECIAZENIE_GLOBALNE void * operator new [](size_t ndim) Alokuje pamiec dla tablicy obiektow ndim - rozmiar tablicy w bajtach wywolanie: ptr_obj = new class_obj [ilosc elementow tablicy]; void * operator new (size_t ndim) Alokuje pamiec dla obiekta klasy obj_class ndim - rozmiar obiektu w bajtach

wywolanie: ptr_obj = new class_obj (parametry_do_konstruktora_sparametryzowanego); ptr_obj = new class_obj; (konstruktor bez parametrow) void operator delete [](void *pob) Zwolnienie pamieci dla tablicy obiektow, alokowanej przez przeciazony operator new... [] ============= void operator delete (void *pob) Zwolnienie pamieci dla obiekta, alokowanego przez przeciazony operator new... () ============= int _tmain(int argc, _TCHAR* argv[]) cout << "operatory new, delete\n"; #ifdef PRZECIAZENIE_GLOBALNE cout << "przeciazenie globalne\n";

cout << "=====================\n"; #ifdef PRZECIAZENIE_LOKALNE cout << "przeciazenie lokalne\n"; cout << "=====================\n"; int it, noit; myclass *ptr = NULL; cout << "podaj noit\n"; cin >> noit; try ptr = new myclass [noit]; catch(bad_alloc bb) cout << "mem_alloc_err\n"; system("pause"); exit(1); for(it=0; it<noit; it++) ptr[it].set_i(it); ptr[it].disp(); delete [] ptr; ptr = NULL; ptr = new myclass(10); ptr->disp(); delete ptr; ptr = NULL; ptr = new myclass; ptr->disp(); delete ptr; ptr = NULL;

cout << "alokowanie tablicy double\n"; double *d_ptr = new double [noit]; delete [] d_ptr; d_ptr = NULL; system("pause"); return 0;