cpp:operator_overloading
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| cpp:operator_overloading [2017/04/26 14:00] – created gthanos | cpp:operator_overloading [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Υπερφόρτωση τελεστών ====== | ====== Υπερφόρτωση τελεστών ====== | ||
| - | Η C++ επιτρέπει την // | + | Η C++ επιτρέπει την // |
| <code cpp Time.cpp> | <code cpp Time.cpp> | ||
| Line 68: | Line 68: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | <WRAP center round info 80%> | ||
| + | Η λειτουργία υπεφόρτωσης ενός τελεστή μπορεί να κληθεί είτε χρησιμοποιώντας τον τελεστή, | ||
| + | <code cpp> | ||
| + | Time t3 = t1.operator+(t2); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Οι συναρτήσεις υπερφόρτωσης τελεστών είναι κανονικές συναρτήσεις που μπορεί να έχουν οποιαδήποτε συμπεριφορά. Για παράδειγμα, | ||
| + | |||
| + | <WRAP info 80% center round> | ||
| + | Οι τελεστές μπορούν να κατηγοριοποιηθούν σε δύο βασικές κατηγορίες, | ||
| + | |||
| + | Οι παράμετροι των τελεστών στο εξής θα καλούνται τελεστέοι. | ||
| + | |||
| + | // | ||
| + | |||
| + | Τόσο οι // | ||
| + | </ | ||
| + | |||
| + | Οι συναρτήσεις υπερφόρτωσης χωρίζονται σε δύο βασικές κατηγορίες **//α)//** μέλη της κλάσης και **//β)//** φιλικές συναρτήσεις. Για κάθε μία από τις παραπάνω δύο κατηγορίες ισχύουν τα εξής: | ||
| + | * **μέλη της κλάσης: | ||
| + | * Για μοναδιαίους τελεστές οι συναρτήσεις μέλη θεωρούν ο τελεστέος είναι το αντικείμενο στο οποίο ανήκει η συνάρτηση. Συνήθως οι συναρτήσεις υπερφόρτωσης των μοναδιαίων τελεστών δεν έχουν ορίσματα. Εξαίρεση αποτελούν οι τελεστές αύξησης ή μείωσης κατά ένα (%%++ ή --%%) όταν αυτοί εφαρμόζονται στα δεξιά του αντικειμένου (//postfix increment/ | ||
| + | * Για δυαδικούς τελεστές οι συναρτήσεις υπερφόρτωσης θεωρούν ότι ο αριστερός τελεστέος είναι το αντικείμενο στο οποίο ανήκει η συνάρτηση και ο δεξιός τελεστέος δίνεται ως η μοναδική παράμετρος. | ||
| + | * **φιλικές συναρτήσεις της κλάσης: | ||
| + | * Για μοναδιαίους τελεστές οι φιλικές συναρτήσεις θεωρούν ότι ο τελεστέος είναι το μοναδικό όρισμα της συνάρτησης. Εξαίρεση αποτελούν οι τελεστές αύξησης ή μείωσης κατά ένα (%%++ ή --%%) όταν αυτοί εφαρμόζονται στα δεξιά του αντικειμένου (//postfix increment/ | ||
| + | * Για δυαδικούς τελεστές οι φιλικές συναρτήσεις υπερφόρτωσης λαμβάνουν δύο ορίσματα. Θεωρούν ότι ο αριστερός τελεστέος είναι το πρώτο όρισμα της συνάρτησης υπερφόρτωσης και ο δεξιός τελεστέος το δεύτερο όρισμα. | ||
| + | |||
| + | Ο παρακάτω πίνακας δίνει τη μορφή της συνάρτησης υπερφόρτωσης για τους τελεστές που είναι διαθέσιμοι προς υπεφόρτωση. Αντικαταστήστε τον χαρακτήρα '' | ||
| + | |||
| + | ^ Έκφραση | ||
| + | | @a | %%+ - * & ! ~ ++ --%% | A:: | ||
| + | | a@ | %%++ --%% | A:: | ||
| + | | a@b | %%+ - * / % ^ | < > == != <= >= << >> && || ,%% | A:: | ||
| + | | a@b | %%= += -= *= /= %= ^= &= |= <<= >>= []%% | A:: | ||
| + | | a(b, | ||
| + | | %%a -> b%% | %%-> | ||
| + | | (TYPE) a | TYPE | A::operator TYPE() | ||
| + | |||
| + | Οι τελεστές που δεν υπερφορτώνονται είναι οι εξής: | ||
| + | | **:: | ||
| + | |||
| + | |||
cpp/operator_overloading.1493215221.txt.gz · Last modified: 2017/04/26 13:00 (external edit)
