cpp:this
This is an old revision of the document!
Ο δείκτης this
Κατά τον ορισμό συναρτήσεων της κλάσης θέλουμε συχνά να αναφερθούμε στο αντικείμενο καλεί τη συγκεκριμένη μέθοδο. Ο τελεστής μπορεί να έχει διάφορες χρήσεις, χρησιμοποιείται κατά την υπερφόρτωση τελεστών καθώς και για να αποφευχθούν συγκρούσεις ονομάτων όταν τοπικές μεταβλητές και πεδία της κλάσης έχουν το ίδιο όνομα. Δείτε παρακάτω το παράδειγμα της κλάσης Rectangle, όπου ο κατασκευαστής της κλάσης και οι μέθοδοι της κλάσης λαμβάνουν ορίσματα που ταυτίζονται με τα ονόματα των πεδίων.
- Rectangle.cpp
#include <iostream> using namespace std; class Rectangle { private: int width, height; public: Rectangle(int width, int height); void setWidth(int width); void setHeight(int height); int getWidth(); int getHeight(); }; Rectangle::Rectangle(int width, int height) { this->width = width; this->height = height; } void Rectangle::setWidth(int width) { this->width = width; } void Rectangle::setHeight(int height) { this->height = height; } int Rectangle::getWidth() { return width; } int Rectangle::getHeight() { return height; }
- RectangleUsage.cpp
#include "Rectangle.cpp" int main () { Rectangle rect(5,6); cout << "area: " << rect.getWidth() * rect.getHeight() << endl; return 0; }
Αφαιρέστε τον δείκτη this από το παραπάνω παράδειγμα, μεταγλωττίστε και εκτελέστε. Το αποτέλεσμα είναι εντελώς διαφορετικό σε αυτή τη περίπτωση. Γιατί;
cpp/this.1492702927.txt.gz · Last modified: 2017/04/20 14:42 (external edit)