Programowanie obiektowe Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt
Operator new, new[] Operator new oraz new[] służy do rezerwacji obszarów z zapasie pamięci New służy do tworzenia pojedynczych obiektów New[] służy do tworzenia tablicy obiektów Operatorami tymi można posługiwać do tworzenia obiektów będących reprezentantami danej klasy Operator ten może zostać przeładowany. Istnieje wersja lokalna zdefiniowana na użytek danej klasy
Operator new Operator new jest składową statyczną. Wywoływany jest na rzecz klasy. Jeżeli w deklaracji zapomnimy static to kompilator zrobi to za nas Operator new() musi zawierać wskaźnik typ void* Pierwszy argument funkcji new[] ma być typu size_t
Operator new Czas życia obiektu: od chwili utworzenia new() do zlikwidowania delete()
Klasa student Wywołanie konstruktora i new() Jeśli w klasie występuje konstruktor wywołanie funkcji new() argumenty tak jak dla konstruktora
Klasa bez konstruktora Jeśli w klasie nie ma konstruktora lub konstruktor jest napisany z wartościami zerowymi wywołanie funkcji new() odbywa się bez parametrów
Likwidacja obiektu Destruktor Destruktorem klasy K jest jej funkcja składowa o nazwie ~K. Funkcja ta wywoływana jest automatycznie gdy obiekt jest likwidowany Klasa nie ma obowiązku posiadania destruktora Destruktor, gdy liczymy obiekty danej klasy zmniejsza licznik o 1 Destruktor nie może zwracać żadnej wartości
Destruktor Jawne wywołanie Jawne wywołanie destruktora nie może zacząć się od ~. Wcześniej musi być obiekt i krobka albo wskaźnik do obiektu -> obiekt.~klasa(); wskaźnik->~klasa(); //wywołanie destruktora
Operator delete delete() Operatory służą do oddawania obszarów pamięci zarezerwowanych operatorami new i new[] Operatorów używamy w stosunku do typów wbudowanych, ale także w stosunku do klas nie mających swojej przeładowanej wersji tych operatorów Jeśli tworzymy ich przeładowaną wersję to powinny to być statycznymi funkcjami składowymi klasy static Delete nazwa obiektu
Odczyt danych z pliku Przykładowy program odczytujący z pliku linie jako zmienne typu string
Odczytanie liczb z pliku
Zadania do wykonania Stwórz roboczą klasę na przykład klasa student z pierwszych zajęć. Czy obiekt utworzony poprzez new() można zlikwidować destruktorem? Czy obiekt utworzony poprzez konstruktor można zlikwidować poprzez delete()? Czy można zlikwidować nieistniejący obiekt delete() i poprzez destruktor? Czy można skopiować jeden obiekt na drugi a=b, gdzie a i b są obiektami klasy np.: student.
Zadania pliki Napisz program zapisujący do pliku dane typu x f(x)=sin(x)/x. Użytkownik programu podaje liczbę punktów do zapisu i przedział na jakim ma zostać stablicowana funkcja. Napisz program, który odczytuje liczby z pliku i wypisuje je na ekran komputera. * Zapisanie odczytanie z pliku odbywa się do pliku o nazwie podanej z klawiatury. Wskazówka, korzystaj z metod klasy if(of)stream
Zadanie domowe Do programu wielomian z poprzednich zadań dołóż możliwość odczytania parametrów wielomianu z pliku. Nazwa pliku do odczytu danych powinna być podawana przez użytkownika. Jak również użytkownik programu powinien zdecydować czy współczynniki wielomianu będą podawane z klawiatury czy z pliku