Showing posts with label OJP. Show all posts
Showing posts with label OJP. Show all posts

Monday, October 29, 2007

Serializacja w C++

Serializowanie to metoda na zapisanie pełnego stanu naszej klasy.

class samochod {
void zapisz (ofstream & s); // Metoda przyjmuje wyjściowy strumień plikowy jako parametr
void odtworz(ifstream & const s); // stały: bo nie zmianiamy jego zawartości
}

void Samochod::zapisz (ofstream & s) {
s << marka << endl;
s << rejestracja << endl;
}

Klasa typu POD:
-> Nie ma konstruktora
-> Nie jest wirtualna
-> Nie ma elementów składowych innych niż stanadrowe (nie może być string, vector itd...)

Jeżeli klasa nie jest typu POD wtedy nie da się zapisać jej za pomocą "adres -> sizeof(class)" ponieważ posiada elementy dynamiczne.

#include

void Samochod::odtworz (ifstream & s) {
getline(s, marka);
getline(s, rejestracja);
}

main() {
ifstream s("plik.txt");
s.open("plik.txt");

s.close
// Tutaj samo się zamknie (robi to destruktor)
}