User Tools

Site Tools


cpp:this

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
cpp:this [2017/04/20 15:39] – created gthanoscpp:this [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
 ====== Ο δείκτης this ====== ====== Ο δείκτης this ======
  
-Κατά τον ορισμό συναρτήσεων της κλάσης θέλουμε συχνά να αναφερθούμε στο αντικείμενο καλεί τη συγκεκριμένη μέθοδο. Ο τελεστής μπορεί να έχει διάφορες χρήσεις, χρησιμοποιείται κατά την υπερφόρτωση τελεστών καθώς και για να αποφευχθούν συγκρούσεις ονομάτων όταν τοπικές μεταβλητές και πεδία της κλάσης έχουν το ίδιο όνομα. Δείτε παρακάτω το παράδειγμα της κλάσης Rectangle, όπου ο κατασκευαστής της κλάσης και οι μέθοδοι της κλάσης λαμβάνουν ορίσματα που ταυτίζονται με τα ονόματα των πεδίων.+Κατά τον ορισμό συναρτήσεων της κλάσης θέλουμε συχνά να αναφερθούμε στο αντικείμενο καλεί τη συγκεκριμένη μέθοδο. Ο τελεστής χρησιμοποιείται //α)// κατά την [[cpp:operator_overloading|υπερφόρτωση τελεστών]] και //β)// για να αποφευχθούν συγκρούσεις ονομάτων όταν τοπικές μεταβλητές και πεδία της κλάσης έχουν το ίδιο όνομα.  
 + 
 +Το παρακάτω παράδειγμα της κλάσης Rectangle αναφέρεται στη δεύτερη περίπτωση, όπου ο κατασκευαστής της κλάσης και οι μέθοδοι της κλάσης λαμβάνουν ορίσματα που ταυτίζονται με τα ονόματα των πεδίων. Σε αυτή την περίπτωση ο δείκτης //this// προσδιορίζει τη διεύθυνση του τρέχοντος αντικειμένου. Μέσω του δείκτη this μπορούμε να διακρίνουμε ένα πεδίο της κλάσης και μία τοπική μεταβλητή ή παράμετρο συνάρτησης που έχουν το ίδιο όνομα.
  
 <code cpp Rectangle.cpp> <code cpp Rectangle.cpp>
Line 28: Line 30:
 </code> </code>
  
 +<code cpp RectangleUsage.cpp>
 +#include "Rectangle.cpp"
 +
 +int main () {
 +  Rectangle rect(5,6);
 +  cout << "area: " << rect.getWidth() * rect.getHeight() << endl;
 +  return 0;
 +}
 +</code>
 +
 +<WRAP center round todo 80%>
 +Αφαιρέστε τον δείκτη //this// από το παραπάνω παράδειγμα, μεταγλωττίστε και εκτελέστε. Το αποτέλεσμα είναι εντελώς διαφορετικό σε αυτή τη περίπτωση. Γιατί;
 +</WRAP>
  
  
cpp/this.1492702783.txt.gz · Last modified: 2017/04/20 14:39 (external edit)