User Tools

Site Tools


cpp:vector_overloading_unary_operators

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cpp:vector_overloading_unary_operators [2019/05/16 07:09] gthanoscpp:vector_overloading_unary_operators [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
 ====== Υπερφόρτωση μοναδιαίων τελεστών (unary operators) ====== ====== Υπερφόρτωση μοναδιαίων τελεστών (unary operators) ======
  
-^  Τελεστής  ^  Θέση (πριν ή μετά το αντικείμενο)  ^  Περιγραφή  ^  Μεταβάλει το αντικείμενο<color red>*</color> Μέλος της κλάσης ή φιλική συνάρτηση ^ +Ο παρακάτω πίνακας περιγράφει την υπερφόρτωση των τελεστών στο παράδειγμα της κλάσης //Vector// που ακολουθεί. 
-|  %%+%%  |  Πριν  | Επιστρέφει το άθροισμα των στοιχείων του αντικειμένου. |  Όχι Μέλος  + 
-|  %%-%%  |  Πριν  | Επιστρέφει ένα νέο αντικείμενο τα στοιχεία του οποίου έχουν αντεστραμμένο πρόσημο σε σχέση με το αντικείμενο που εφαρμόζεται.  |  Όχι Μέλος  +^  Τελεστής  ^  Θέση (πριν ή μετά το αντικείμενο)  ^  Περιγραφή  ^  Μεταβάλει το αντικείμενο<color red>*</color> Φιλική συνάρτηση ^ 
-|  %%++%%  |  Πριν  | Επιστρέφει ένα νέο αντικείμενο τα στοιχεία του οποίου έχουν αυξηθεί κατά ένα σε σχέση με το αντικείμενο που εφαρμόζεταιΤο αντικείμενο στο οποίο εφαρμόζεται έχει αυξήσει και αυτό τις τιμές των στοιχείων του κατά ένα.  |  Ναι Μέλος  +|  %%+%%  |  Πριν  | Επιστρέφει το άθροισμα των στοιχείων του αντικειμένου. |  Όχι Όχι 
-|  %%--%%  |  Πριν  | Επιστρέφει ένα νέο αντικείμενο τα στοιχεία του οποίου έχουν μειωθεί κατά ένα σε σχέση με το αντικείμενο που εφαρμόζεται. Το αντικείμενο στο οποίο εφαρμόζεται έχει μειώσει και αυτό τις τιμές των στοιχείων του κατά ένα.  |  Ναι Φιλική  +|  %%-%%  |  Πριν  | Επιστρέφει ένα νέο αντικείμενο τα στοιχεία του οποίου έχουν αντεστραμμένο πρόσημο σε σχέση με το αντικείμενο που εφαρμόζεται.  |  Όχι Όχι 
-|  %%++%%  |  Μετά  | Επιστρέφει ένα νέο αντικείμενο αντίγραφο του αντικειμένου που εφαρμόζεται. Το αντικείμενο στο οποίο εφαρμόζεται έχει αυξήσει τις τιμές των στοιχείων του κατά ένα |  Ναι Μέλος  +|  %%++%%  |  Πριν  | Επιστρέφει μία αναφορά στο τρέχον αντικείμενοτα στοιχεία του οποίου έχουν αυξηθεί κατά ένα. |  Ναι Όχι 
-|  %%--%%  |  Μετά  | Επιστρέφει ένα νέο αντικείμενο αντίγραφο του αντικειμένου που εφαρμόζεται. Το αντικείμενο στο οποίο εφαρμόζεται έχει μειώσει τις τιμές των στοιχείων του κατά ένα.  |  Ναι Φιλική  +|  %%--%%  |  Πριν  | Επιστρέφει μία αναφορά στο αντικείμενο που περνιέται ως 1η παράμετρος στη φιλική συνάρτηση (δηλαδή το τρέχον αντικείμενο), τα στοιχεία του οποίου έχουν μειωθεί κατά ένα.  |  Ναι Ναι | 
-|  %%*%%  |  Πριν  | Επιστρέφει έναν ακέραιο που αποτελεί το γινόμενο των στοιχείων του πίνακα. |  Όχι  |  Μέλος +|  %%++%%  |  Μετά  | Επιστρέφει ένα νέο αντικείμενο, που είναι αντίγραφο του αντικειμένου στο οποίο εφαρμόζεται ο τελεστής, πριν την πράξη της αύξησης. Το αντικείμενο στο οποίο εφαρμόζεται ο τελεστής αυξάνει τις τιμές των στοιχείων του κατά 1. |  Ναι Όχι 
-|  %%!%%  |  Πριν  | Επιστρέφει ένα νέο αντικείμενο τα στοιχεία του οποίου έχουν αντίστροφη σειρά σε σχέση με το αντικείμενο που εφαρμόζεται.  |  Όχι  +|  %%--%%  |  Μετά  | Επιστρέφει ένα νέο αντικείμενο, που είναι αντίγραφο του αντικειμένου στο οποίο εφαρμόζεται ο τελεστής, πριν την πράξη της μείωσης. Το αντικείμενο στο οποίο εφαρμόζεται ο τελεστής μειώνει τις τιμές των στοιχείων του κατά 1.  |  Ναι Ναι | 
-|  %%~%%  |  Πριν  | Επιστρέφει ένα νέο αντικείμενο τα στοιχεία του οποίου αποτελούν το //binary NOT// των στοιχείων του αντικειμένου στο οποίο εφαρμόζεται.  |  Όχι Φιλική  |+|  %%*%%  |  Πριν  | Επιστρέφει έναν ακέραιο που αποτελεί το γινόμενο των στοιχείων του πίνακα. |  Όχι Όχι  | 
 +|  %%!%%  |  Πριν  | Επιστρέφει ένα νέο αντικείμενο τα στοιχεία του οποίου έχουν αντίστροφη σειρά σε σχέση με το αντικείμενο που εφαρμόζεται.  |  Όχι Ναι 
 +|  %%~%%  |  Πριν  | Επιστρέφει ένα νέο αντικείμενο τα στοιχεία του οποίου αποτελούν το //binary NOT// των στοιχείων του αντικειμένου στο οποίο εφαρμόζεται.  |  Όχι Όχι  |
  
 <color red>*</color> **στο οποίο εφαρμόζεται**. <color red>*</color> **στο οποίο εφαρμόζεται**.
Line 30: Line 32:
 </code> </code>
 </WRAP> </WRAP>
 +
  
 <WRAP center round tip 80%> <WRAP center round tip 80%>
-Στον παρακάτω κώδικα προσέξτε τα εξής: +Επίσης, παρατηρήστε ότι οι συναρτήσεις που δεν μεταβάλλουν το αντικείμενο στο οποίο εφαρμόζονται δηλώνονται ως **//const//**. Για παράδειγμα, η συνάρτηση 
-  * Οι συναρτήσεις που δεν μεταβάλλουν το αντικείμενο στο οποίο εφαρμόζονται δηλώνονται ως **//const//**. +<code cpp> 
-  * Σε όλες τις περιπτώσεις επιστρέφεται ένα νέο αντικείμενο ανεξάρτητα εάν μεταβλήθηκε το αντικείμενο πάνω στο οποίο εφαρμόζεται ο τελεστής ή όχι. +Vector operator~() const; 
-  * η υπερφόρτωση του τελεστή **!** (//operator!//) δηλώνεται ως φιλική μέθοδος (δείτε την εναλλακτική υλοποίηση για το συγκεκριμένο τελεστή).+</code> 
 +επιστρέφει ένα νέο αντικείμενο του οποίου τα στοιχεία είναι το binary NOT του αρχικούΟ αρχικός πίνακας παραμένει αμετάβλητος.
 </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 {
Line 65: Line 72:
      
   int operator+() const;           // returns the sum of Vector elements   int operator+() const;           // returns the sum of Vector elements
-  friend int operator*(const Vector&) ;           // returns the product of Vector elements+  friend int operator*(const Vector&) ;  // returns the product of Vector elements
      
   Vector operator-() const;        // returns a new Vector, containing the negative   Vector operator-() const;        // returns a new Vector, containing the negative
                                    // values of the original vector.                                    // values of the original vector.
   Vector& operator++();            // prefix increment. Returns reference to the existing vector.   Vector& operator++();            // prefix increment. Returns reference to the existing vector.
-  friend Vector& operator--(Vector&);            // prefix decrement. Returns reference to the existing vector.+  friend Vector& operator--(Vector&);    // prefix decrement. Returns reference to the existing vector.
   Vector operator++(int );         // postfix increment. Returns a new Vector.   Vector operator++(int );         // postfix increment. Returns a new Vector.
   friend Vector operator--(Vector&, int);  // postfix decrement. Returns a new Vector.   friend Vector operator--(Vector&, int);  // postfix decrement. Returns a new Vector.
Line 78: Line 85:
                                              // elements in inverted sequence.                                              // elements in inverted sequence.
 }; };
 +
 +#endif
 +</code>
 +
 +<code cpp Vector.cpp>
 +#include "Vector.hpp"
  
 Vector::Vector(unsigned int length) { Vector::Vector(unsigned int length) {
Line 236: Line 249:
 } }
  
 +</code>
 +
 +<code cpp VectorUsage.cpp>
 +#include "Vector.hpp"
  
 int main() { int main() {
cpp/vector_overloading_unary_operators.1557990575.txt.gz · Last modified: 2019/05/16 06:09 (external edit)