Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:"— Μεταγράφημα παρουσίασης:

1 ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ nickie@softlab.ntua.gr Διδάσκων: Νίκος Παπασπύρου http://www.softlab.ntua.gr/~nickie/TUC/log201/ 1Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διαφάνειες παρουσίασης #4 4 Κατασκευαστές (constructors) 4 Καταστροφείς (destructors) 4 Δείκτης this 4 Διάφοροι τελεστές

2 2Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Κατασκευαστές (constructors)(i) u Μιγαδικοί αριθμοί class complex { //... public: complex (); complex (double r, double i); complex (const complex & c); }; complex c1; complex c2(1.0, 4.0); complex c3(c1);

3 3Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Κατασκευαστές (constructors)(ii) u Default constructor complex::complex () { re = im = 0.0; } u Copy constructor complex::complex (const complex & c) { re = c.re; im = c.im; }

4 4Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Κατασκευαστές (constructors)(iii) u Λοιποί constructors complex::complex (double r, double i) { re = r; im = i; } complex::complex (double r) { re = r; im = 0.0; }

5 5Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Καταστροφείς (destructors)(i) u Καλούνται όταν ένα αντικείμενο καταστρέφεται, δηλαδή παύει να υπάρχει: { name n; //... } u Πολλές φορές απαραίτητοι για λειτουργίες εκκαθάρισης, π.χ. l αποδέσμευση μνήμης l κλείσιμο αρχείων

6 6Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Καταστροφείς (destructors)(ii) class name { private: char * s; public: name (const char * n); ~name (); }; name::name (const char * n) { cout << n << " is copied\n"; s = new char [strlen(n)+1]; strcpy(s, n); }

7 7Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Καταστροφείς (destructors)(iii) name::~name () { cout << s << " is deleted\n"; delete [] s; } int main () { name n("nickie"); return 0; } nickie is copied nickie is deleted nickie is copied nickie is deleted

8 8Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Δείκτης this u Δείχνει στο αντικείμενο επάνω στο οποίο εφαρμόζεται μια μέθοδος u Η χρήση του απαιτείται σπάνια u Παράδειγμα void complex::set (double r, double i) { this->re = r; // re = r; this->im = i; // im = i; } l Η χρήση του this στο παραπάνω παράδειγμα είναι περιττή

9 9Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διάφοροι τελεστές(i) u operator = complex & complex::operator = ( const complex & c) { re = c.re; im = c.im; return *this; } name & name::operator = ( const name & n) { delete [] s; s = new char [strlen(n.s)+1]; strcpy(s, n.s); return *this; }

10 10Νίκος ΠαπασπύρουΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διάφοροι τελεστές(ii) u operator [] char & name::operator [] (int i) { return s[i]; } u operator () char name::operator () (int i) { return s[i]; } u Παραδείγματα n[4] = 'a'; cout << n(4);


Κατέβασμα ppt "ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google