Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
cpp:vector_overloading_binary_operators [2019/05/16 11:14] – gthanos | cpp:vector_overloading_binary_operators [2021/05/24 07:42] – gthanos |
---|
===== Υπερφόρτωση δυαδικών τελεστών που μπορούν να υλοποιηθούν ως μέλη της κλάσης ή ως φιλικές συναρτήσεις ===== | ===== Υπερφόρτωση δυαδικών τελεστών που μπορούν να υλοποιηθούν ως μέλη της κλάσης ή ως φιλικές συναρτήσεις ===== |
| |
Παρακάτω θα δούμε την υπερφόρτωση τελεστών που δεν μεταβάλλουν τον αριστερό τελεστέο. Οι τελεστές περιγράφονται στον παρακάτω πίνακα. | Ο παρακάτω πίνακας περιγράφει τη λειτουργία της υπερφόρτωσης των τελεστών για το παράδειγμα της κλάσης //Vector// που ακολουθεί. Σε αυτή την ενότητα, θα δούμε παραδείγματα υπερφόρτωσης, τα οποία δεν μεταβάλλουν τον αριστερό τελεστέο. |
| |
^ Τελεστής ^ Αριστερός τελεστέος ^ Δεξιός τελεστέος ^ Περιγραφή ^ Φιλική μέθοδος ^ | ^ Τελεστής ^ Αριστερός τελεστέος ^ Δεξιός τελεστέος ^ Περιγραφή ^ Φιλική μέθοδος ^ |
| %%/%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από την ακέραια διαίρεση του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | | | %%/%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από την ακέραια διαίρεση του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | |
| % | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από το υπόλοιπο της ακέραιας διαίρεσης του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | | | % | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector// που κάθε στοιχείο του προκύπτει από το υπόλοιπο της ακέραιας διαίρεσης του αντίστοιχου στοιχείου του //Vector// με τον ακέραιο | Όχι | |
| %%<<%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector//, το οποίο προκύπτει από τον αριστερό τελεστέο εάν ολισθήσουμε όλα τα στοιχεία του αριστερά κατά τόσες θέσεις όσες προσδιορίζει ο δεξιός τελεστέος. | και τα δύο (η φιλική συνάρτηση σε σχόλια) | | | %%<<%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector//, το οποίο προκύπτει από τον αριστερό τελεστέο εάν ολισθήσουμε όλα τα στοιχεία του αριστερά κατά τόσα bits όσα προσδιορίζει ο δεξιός τελεστέος. | και τα δύο (η φιλική συνάρτηση σε σχόλια) | |
| %%>>%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector//, το οποίο προκύπτει από τον αριστερό τελεστέο εάν ολισθήσουμε όλα τα στοιχεία του δεξιά κατά τόσες θέσεις όσες προσδιορίζει ο δεξιός τελεστέος. | και τα δύο (η φιλική συνάρτηση σε σχόλια) | | | %%>>%% | //Vector// | //int// | Επιστρέφει ένα νέο αντικείμενο τύπου //Vector//, το οποίο προκύπτει από τον αριστερό τελεστέο εάν ολισθήσουμε όλα τα στοιχεία του δεξιά κατά τόσα bits όσα προσδιορίζει ο δεξιός τελεστέος. | και τα δύο (η φιλική συνάρτηση σε σχόλια) | |
| %%==%% | //int// | //Vector// | Επιστρέφει //true// εάν για κάθε (0<=i<=size) το στοιχείο του αριστερού τελεστέου στην θέση i, είναι ίσο με το στοιχείο του δεξιού τελεστέου στην ίδια θέση, διαφορετικά //false// | Όχι | | | %%==%% | //int// | //Vector// | Επιστρέφει //true// εάν για κάθε (0<=i<=size) το στοιχείο του αριστερού τελεστέου στην θέση i, είναι ίσο με το στοιχείο του δεξιού τελεστέου στην ίδια θέση, διαφορετικά //false// | Όχι | |
| %%!=%% | //int// | //Vector// | Επιστρέφει //true// εάν για κάθε (0<=i<=size) το στοιχείο του αριστερού τελεστέου στην θέση i, ΔΕΝ είναι ίσο με το στοιχείο του δεξιού τελεστέου στην ίδια θέση, διαφορετικά //false// | Όχι | | | %%!=%% | //int// | //Vector// | Επιστρέφει //true// εάν για κάθε (0<=i<=size) το στοιχείο του αριστερού τελεστέου στην θέση i, ΔΕΝ είναι ίσο με το στοιχείο του δεξιού τελεστέου στην ίδια θέση, διαφορετικά //false// | Όχι | |
</WRAP> | </WRAP> |
| |
<code cpp Vector.cpp> | <code cpp Vector.hpp> |
#include <iostream> | #include <iostream> |
#include <string> | #include <string> |
#include <cstdlib> | #include <cstdlib> |
using namespace std; | using namespace std; |
| |
| #ifndef _VECTOR_HPP_ |
| #define _VECTOR_HPP_ |
| |
class Vector { | class Vector { |
//friend Vector operator>>(const Vector& v, int a);// Same as above | //friend Vector operator>>(const Vector& v, int a);// Same as above |
}; | }; |
| |
| #endif |
| </code> |
| |
| <code cpp Vector.cpp> |
| #include "Vector.hpp" |
| |
Vector::Vector(int length) { | Vector::Vector(int length) { |
return n; | return n; |
} | } |
| </code> |
| |
| <code cpp Vector.cpp> |
| #include "Vector.hpp" |
| |
int main() { | int main() { |