cpp:functions
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cpp:functions [2017/04/11 12:32] – gthanos | cpp:functions [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Line 15: | Line 15: | ||
</ | </ | ||
- | ===== Η επιστρεφόμενη τιμή της συνάρτησης main ===== | + | ===== Ορίσματα και |
+ | Γνωρίζετε από τη C ότι η συνάρτηση //main// από την οποία εκκινεί το πρόγραμμα ορίζεται ως εξής: | ||
+ | <code c++> | ||
+ | int main(int argc, char *argv[]); | ||
+ | </ | ||
+ | |||
+ | Σε ένα πρόγραμμα C++ η main μπορεί να δηλωθεί χωρίς να λαμβάνει κανένα όρισμα, | ||
+ | <code c++> | ||
+ | int main(); | ||
+ | </ | ||
+ | |||
+ | Επίσης, | ||
===== Προκαθορισμένες τιμές παραμέτρων (default values) ===== | ===== Προκαθορισμένες τιμές παραμέτρων (default values) ===== | ||
Κατά τον ορισμό μίας συνάρτησης είναι δυνατόν να ορίσετε προκαθορισμένες τιμές για συγκεκριμένες παραμέτρους. Με αυτό τον τρόπο η ίδια μέθοδος μπορεί να κληθεί με λιγότερα ορίσματα, | Κατά τον ορισμό μίας συνάρτησης είναι δυνατόν να ορίσετε προκαθορισμένες τιμές για συγκεκριμένες παραμέτρους. Με αυτό τον τρόπο η ίδια μέθοδος μπορεί να κληθεί με λιγότερα ορίσματα, | ||
- | <code c++ powerOf.cpp> | + | <code c++ power_of.cpp> |
#include < | #include < | ||
using namespace std; | using namespace std; | ||
Line 28: | Line 39: | ||
if(e==0) | if(e==0) | ||
return 1; | return 1; | ||
+ | int result = base; | ||
for(int i=1; i<e; i++) { | for(int i=1; i<e; i++) { | ||
- | | + | |
} | } | ||
- | return | + | return |
} | } | ||
int main() { | int main() { | ||
- | int a = 5, b; | + | int a = 2, b; |
b = powerOf(a); | b = powerOf(a); | ||
cout << "a: " << a <<", | cout << "a: " << a <<", | ||
- | b = powerOf(a, | + | b = powerOf(a, 3); |
+ | cout << "a: " << a <<", | ||
+ | b = powerOf(a, 5); | ||
cout << "a: " << a <<", | cout << "a: " << a <<", | ||
} | } | ||
Line 69: | Line 83: | ||
===== Κλήση με τιμή και κλήση με αναφορά ===== | ===== Κλήση με τιμή και κλήση με αναφορά ===== | ||
- | Κατά την κλήση μίας συνάρτησης οι παράμετροι της συνάρτησης αντιγράφονται στο stack πριν από την εκτέλεσης της. Μετά την ολοκλήρωση εκτέλεσης οι παράμετροι διαγράφονται από το stack και οποιαδηποτε αλλαγές έγιναν στις παραμέτρους κατά τη κλήσης της συνάρτησης είναι αδύνατο να διατηρηθούν μετά την κλήση της | + | Κατά την κλήση μίας συνάρτησης οι παράμετροι της συνάρτησης αντιγράφονται στο |
- | Εάν θέλουμε οι αλλαγές στα ορίσματα της συνάρτησης να διατηρηθούν και μετά την κλήση της θα πρέπει να περάσουμε τις διευθύνσεις των εμπλεκόμενων μεταβλητών και όχι τις μεταβλητές αυτές καθ' | + | Εάν θέλουμε οι αλλαγές στα ορίσματα της συνάρτησης να διατηρηθούν και μετά την κλήση της θα πρέπει να περάσουμε τις διευθύνσεις των εμπλεκόμενων μεταβλητών και όχι τις μεταβλητές αυτές καθ' |
<code c++ powerOf2.cpp> | <code c++ powerOf2.cpp> | ||
Line 113: | Line 127: | ||
Παρατηρήστε ότι μετά την έξοδο από τις μεθόδους // | Παρατηρήστε ότι μετά την έξοδο από τις μεθόδους // | ||
+ | |||
+ | <WRAP center round tip 80%> | ||
+ | Κατά την κλήση μίας συνάρτησης, | ||
+ | |||
+ | Για τους βασικούς τύπους δεδομένων η κλήση με αναφορά σε σχέση με την κλήση με τιμή δεν βελτιώνει την ταχύτητα εκτέλεσης του προγράμματος. | ||
+ | </ | ||
+ | |||
+ | ===== Αναφορές ως επιστρεφόμενες τιμές συναρτήσεων ===== | ||
+ | |||
+ | [[cpp: | ||
===== Υπερφόρτωση συναρτήσεων ===== | ===== Υπερφόρτωση συναρτήσεων ===== | ||
- | Η C++ (όπως και η Java) επιτρέπει δύο συναρτήσεις να έχουν το ίδιο όνομα αλλά διαφορετικό αριθμό ή τύπο παραμέτρων. Αυτό συμβαίνει διότι η συνάρτηση δεν ορίζεται μόνο από το όνομα της, αλλά από το όνομα της σε συνδυασμό με τις τυπικές παραμέτρους που λαμβάνει. Δείτε το προηγούμενο παράδειγμα προσαρμοσμένο, | + | Η C++ (όπως και η Java) επιτρέπει δύο συναρτήσεις να έχουν το ίδιο όνομα αλλά διαφορετικό αριθμό ή τύπο παραμέτρων. Αυτό συμβαίνει διότι η συνάρτηση δεν ορίζεται μόνο από το όνομα της, αλλά από το όνομα της σε συνδυασμό με τις τυπικές παραμέτρους που λαμβάνει. Δείτε το προηγούμενο παράδειγμα προσαρμοσμένο, |
<code c++ powerOf2.cpp> | <code c++ powerOf2.cpp> | ||
Line 149: | Line 173: | ||
} | } | ||
</ | </ | ||
- | |||
- | Παρατηρήστε ότι οι συνάρτηση // | ||
- | |||
- | <WRAP center round info 80%> | ||
- | Όταν θέλουμε να περάσουμε σε μία συνάρτηση μεγάλα αντικείμενα που περιέχουν πολύ πληροφορία είναι προτιμότερο να τα περάσουμε με αναφορά ακόμη και εάν δεν επιθυμούμε οι πιθανές αλλαγές στις τυπικές παραμέτρους να είναι ορατές μετά την κλήση της συνάρτησης. Ο λόγος είναι ότι η κλήση με αναφορά έχει σταθερό κόστος αντιγραφής ισοδύναμο με το μήκος μίας διεύθυνσης μνήμης, | ||
- | |||
- | Για βασικούς τύπους δεδομένων η κλήση με αναφορά δεν έχει καμία επίπτωση στην ταχύτητα εκτέλεσης του προγράμματος. | ||
- | </ | ||
===== Template συναρτήσεων ===== | ===== Template συναρτήσεων ===== | ||
Line 166: | Line 182: | ||
</ | </ | ||
- | Παρατηρούμε ότι οι παραπάνω συναρτήσεις έχουν το ίδιο | + | Παρατηρούμε ότι οι παραπάνω συναρτήσεις έχουν τον ίδιο αριθμό |
<code c++> | <code c++> | ||
Line 175: | Line 191: | ||
</ | </ | ||
- | η δεσμευμένη | + | η δεσμευμένη έκφραση '' |
<code c++> | <code c++> | ||
Line 181: | Line 197: | ||
</ | </ | ||
- | Δείτε το παραπάνω παράδειγμα που περιέχει επιμέρους κλήσεις για την // | + | Δείτε το παραπάνω παράδειγμα που περιέχει επιμέρους κλήσεις για τη μέθοδο sum. |
- | <code sumUsage.cpp> | + | < |
#include < | #include < | ||
using namespace std; | using namespace std; |
cpp/functions.1491913942.txt.gz · Last modified: 2017/04/11 11:32 (external edit)