Differences
This shows you the differences between two versions of the page.
| Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
cpp:operator_overloading [2020/04/28 08:27] gthanos |
cpp:operator_overloading [2021/05/24 06:28] (current) |
| ====== Υπερφόρτωση τελεστών ====== | ====== Υπερφόρτωση τελεστών ====== |
| |
| Η C++ επιτρέπει την //υπεφόρτωση// των περισσότερων από τους διαθέσιμους τελεστές της γλώσσας. Με τον όρο //υπεφόρτωση// εννοούμε τον ορισμό μιας νέας συμπεριφοράς για τον τελεστή όταν αυτός εφαρμόζεται όχι σε βασικούς τύπους δεδομένων, αλλά σε αναφορικούς τύπους δεδομένων. Για παράδειγμα, στην παρακάτω κλάση //Time// τι θα γίνει εάν προσθέσουμε δύο αντικείμενα της κλάσης αυτής; | Η C++ επιτρέπει την //υπεφόρτωση// των περισσότερων από τους διαθέσιμους τελεστές της γλώσσας. Με τον όρο //υπεφόρτωση// εννοούμε τον ορισμό μιας νέας συμπεριφοράς για τον τελεστή όταν αυτός εφαρμόζεται όχι σε βασικούς τύπους δεδομένων, αλλά σε σύνθετους τύπους δεδομένων που περιγράφονται από κλάσεις. Για παράδειγμα, στην παρακάτω κλάση //Time// τι θα γίνει εάν προσθέσουμε δύο αντικείμενα της κλάσης αυτής; |
| |
| <code cpp Time.cpp> | <code cpp Time.cpp> |
| Ο παρακάτω πίνακας δίνει τη μορφή της συνάρτησης υπερφόρτωσης για τους τελεστές που είναι διαθέσιμοι προς υπεφόρτωση. Αντικαταστήστε τον χαρακτήρα ''@'' με τον εκάστοτε τελεστή. | Ο παρακάτω πίνακας δίνει τη μορφή της συνάρτησης υπερφόρτωσης για τους τελεστές που είναι διαθέσιμοι προς υπεφόρτωση. Αντικαταστήστε τον χαρακτήρα ''@'' με τον εκάστοτε τελεστή. |
| |
| ^ Έκφραση ^ Τελεστής ^ Υπερφόρτωση ως μέλος της κλάσης A ^ Υπερφόρτωση ως φιλική συνάρτηση A ^ | ^ Έκφραση ^ Τελεστής ^ Υπερφόρτωση ως μέλος της κλάσης A ^ Υπερφόρτωση ως φιλική συνάρτηση της κλάσης A ^ |
| | @a | %%+ - * & ! ~ ++ --%% | A::operator@() | operator@(A) | | | @a | %%+ - * & ! ~ ++ --%% | A::operator@() | operator@(A) | |
| | a@ | %%++ --%% | A::operator@(int) | operator@(A,int) | | | a@ | %%++ --%% | A::operator@(int) | operator@(A,int) | |