This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
cpp:function_templates [2019/05/02 13:43] gthanos created |
cpp:function_templates [2021/06/04 16:29] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Templates Συναρτήσεων ====== | ||
| - | Ας υποθέσουμε ότι θέλουμε να φτιάξουμε μία συνάρτηση η οποία να βρίσκει το μέγιστο μεταξύ δύο τιμών. Η συνάρτηση θα μπορούσε να είναι η εξής: | ||
| - | <code cpp> | ||
| - | int maximum(int a, int b) { return (a> | ||
| - | </ | ||
| - | |||
| - | Αντίστοιχα εάν θέλουμε να βρούμε το μέγιστο μεταξύ δύο αριθμών κινητής υποδιαστολής θα καλούμαστε να γράψουμε | ||
| - | <code cpp> | ||
| - | double maximum(double a, double b) { return (a> | ||
| - | </ | ||
| - | |||
| - | Το ερώτημα είναι εάν θα μπορούσαμε να αποφύγουμε τις παραπάνω δηλώσεις και αντ' | ||
| - | |||
| - | Η παραπάνω συνάρτηση θα μπορούσε να γραφεί με τη βοήθεια // | ||
| - | <code cpp> | ||
| - | template < | ||
| - | T maximum(T a, T b) { return (a> | ||
| - | </ | ||
| - | |||
| - | Το **Τ** μπορεί να είναι οποιοσδήποτε τύπος, επομένως και κάποιος τύπος που περιγράφεται από κλάση. Προκειμένου να μην γίνονται σημαντικές αντιγραφές κατά την κλήση των παραμέτρων με τιμή, προτιμούμε την παρακάτω ισοδύναμη, | ||
| - | <code cpp> | ||
| - | template < | ||
| - | T& maximum(T& | ||
| - | </ | ||
| - | |||
| - | Ας προσπαθήσουμε να χρησιμοποιήσουμε την παραπάνω συνάρτηση. | ||
| - | <code cpp maximum1.cpp> | ||
| - | template < | ||
| - | T& maximum(T& | ||
| - | |||
| - | #include < | ||
| - | using namespace std; | ||
| - | |||
| - | int main() { | ||
| - | int a = 5, b = 10; | ||
| - | double d = 5.5, f=3.3; | ||
| - | cout << " | ||
| - | cout << " | ||
| - | } | ||
| - | </ | ||