| Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
cpp:vector_overloading_binary_operators [2017/05/05 12:55] gthanos |
cpp:vector_overloading_binary_operators [2021/05/24 06:42] |
| ===== Υπερφόρτωση δυαδικών τελεστών που δεν μεταβάλλουν τον αριστερό τελεστέο (binary operators overloading) ===== | |
| |
| Παρακάτω θα δούμε την υπερφόρτωση τελεστών που δεν μεταβάλλουν τον αριστερό τελεστέο. Οι τελεστές περιγράφονται στον παρακάτω πίνακα. | |
| |
| ^ Τελεστής ^ Αριστερός τελεστέος ^ Δεξιός τελεστέος ^ Περιγραφή ^ Φιλική μέθοδος ^ | |
| | %%+%% | //Vector// | //Vector// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από το άθροισμα των στοιχείων των δύο τελεστεών τύπου //Vector// | και τα δύο (η φιλική συνάρτηση σε σχόλια) | | |
| | %%-%% | //Vector// | //Vector// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από τη διαφορά των στοιχείων των δύο τελεστεών τύπου //Vector// | Όχι | | |
| | %%+%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από το άθροισμα του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | | |
| | %%+%% | //int// | //Vector// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από το άθροισμα του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Ναι | | |
| | %%-%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από τη διαφορά του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | | |
| | %%*%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από το γινόμενο του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | | |
| | %%*%% | //int// | //Vector// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από το γινόμενο του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Ναι | | |
| | %%/%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από την ακέραια διαίρεση του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | | |
| | % | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από το υπόλοιπο της ακέραιας διαίρεσης του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | | |
| | %%<<%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// στο οποίο έχει προστεθεί ο δεξιός τελεστέος. Το νέο αντικείμενο έχει μέγεθος κατά ένα μεγαλύτερο του αριστερού τελεστέου. | και τα δύο (η φιλική συνάρτηση σε σχόλια) | | |
| | %%>>%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// στο οποίο έχει διαγραφεί ο δεξιός τελεστέος, εφόσον αυτός υπάρχει. Το νέο αντικείμενο έχει μέγεθος κατά ένα μικρότερο του αριστερού τελεστέου, εάν βρεθεί ο δεξιός τελεστέος μέσα στο //Vector//. Εάν δεν βρεθεί επιστρέφεται ένα αντικείμενο που περιέχει τα στοιχεία του αριστερού τελεστέου. | και τα δύο (η φιλική συνάρτηση σε σχόλια) | | |
| |
| <WRAP center round info 80%> | |
| Όταν έχετε μία φιλική μέθοδο και ένα μέλος της κλάσης που υλοποιούν την ίδια λειτουργικότητα υπερφόρτωσης, κατά τη χρήση του αντίστοιχου τελεστή χρησιμοποιείται (//υπερισχύει//) η συνάρτηση μέλος της κλάσης. | |
| </WRAP> | |
| |
| |
| |
| <code cpp Vector.cpp> | |
| </code> | |
| |
| Από τα παραπάνω παρατηρούμε τα εξής: | |
| |
| |
| |
| |