This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
|
cpp:vector_overloading [2017/05/04 12:38] gthanos [Μοναδιαίοι τελεστές (unary operators)] |
cpp:vector_overloading [2019/05/16 07:29] gthanos |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Παράδειγμα | + | ====== Παράδειγμα |
| Ας υποθέσουμε ότι έχουμε την παρακάτω κλάση //Vector// η οποία υλοποιεί ένα μονοδιάστατο πίνακα από ακεραίους. | Ας υποθέσουμε ότι έχουμε την παρακάτω κλάση //Vector// η οποία υλοποιεί ένα μονοδιάστατο πίνακα από ακεραίους. | ||
| Line 9: | Line 9: | ||
| class Vector { | class Vector { | ||
| int *array; | int *array; | ||
| - | | + | int size; |
| | | ||
| public: | public: | ||
| - | Vector(unsigned | + | Vector(int length=0); |
| Vector(const Vector &v); | Vector(const Vector &v); | ||
| Vector(const Vector *v); | Vector(const Vector *v); | ||
| ~Vector(); | ~Vector(); | ||
| - | | + | int length() const;// return Vector' |
| - | int & | + | int & |
| - | int find(int a); | + | int find(int a) const; |
| + | // if not element not found | ||
| + | |||
| + | void print() const; // print vector values to standard output | ||
| }; | }; | ||
| - | Vector:: | + | Vector:: |
| size = length; | size = length; | ||
| array = new (nothrow) int[size]; | array = new (nothrow) int[size]; | ||
| Line 58: | Line 61: | ||
| } | } | ||
| - | unsigned | + | int Vector:: |
| return size; | return size; | ||
| } | } | ||
| - | int & | + | int & |
| if(pos> | if(pos> | ||
| cerr << " | cerr << " | ||
| Line 70: | Line 73: | ||
| } | } | ||
| - | int Vector:: | + | int Vector:: |
| for(int i=0; i<size; i++) | for(int i=0; i<size; i++) | ||
| if(array[i] == a) | if(array[i] == a) | ||
| return i; | return i; | ||
| return -1; | return -1; | ||
| + | } | ||
| + | |||
| + | void Vector:: | ||
| + | for(int i=0; i<size; i++) { | ||
| + | cout << array[i]; | ||
| + | if(i==size-1) | ||
| + | cout << endl; | ||
| + | else | ||
| + | cout << ", "; | ||
| + | } | ||
| } | } | ||
| Line 83: | Line 96: | ||
| } | } | ||
| </ | </ | ||
| - | |||
| - | Για την παραπάνω κλάση κλάση //Vector// θέλουμε να υπερφορτώσουμε τους τελεστές ως εξής: | ||
| - | |||
| - | ===== Μοναδιαίοι τελεστές (unary operators) ===== | ||
| - | |||
| - | ^ Τελεστής | ||
| - | | %%+%% | Πριν | ||
| - | | %%-%% | Πριν | ||
| - | | %%!%% | Πριν | ||
| - | | %%++%% | ||
| - | | %%--%% | ||
| - | | %%++%% | ||
| - | | %%--%% | ||
| - | |||
| - | <WRAP center round tip 60%> | ||
| - | Προσέξτε τη διαφορετική συμπεριφορά ανάμεσα στους μοναδιαίους τελεστές αύξησης και μείωσης κατά ένα (%%++, --%%) όταν αυτοί εφαρμόζονται πριν και μετά το αντικείμενο. | ||
| - | </ | ||
| - | |||
| + | Για την παραπάνω κλάση κλάση //Vector// θέλουμε να υπερφορτώσουμε τους τελεστές ανά κατηγορία ως εξής: | ||
| + | * [[cpp: | ||
| + | * [[cpp: | ||
| + | * [[cpp: | ||