cpp:function_templates
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| cpp:function_templates [2019/05/04 04:32] – [Templates συναρτήσεων με παραμέτρους σύνθετους τύπους (κλάσεις)] gthanos | cpp:function_templates [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 26: | Line 26: | ||
| Ας προσπαθήσουμε να χρησιμοποιήσουμε την παραπάνω συνάρτηση. | Ας προσπαθήσουμε να χρησιμοποιήσουμε την παραπάνω συνάρτηση. | ||
| - | <code cpp maximum1.cpp> | + | <code cpp find_max1.cpp> |
| template < | template < | ||
| T& maximum(T& | T& maximum(T& | ||
| Line 47: | Line 47: | ||
| <WRAP tip 80% center round> | <WRAP tip 80% center round> | ||
| Μπορείτε να παραλείψετε τον τύπο των παραμέτρων κατά την κλήση της συνάρτησης **maximum** ως εξής: | Μπορείτε να παραλείψετε τον τύπο των παραμέτρων κατά την κλήση της συνάρτησης **maximum** ως εξής: | ||
| - | <code cpp maximum1.cpp> | + | <code cpp find_max1.cpp> |
| template < | template < | ||
| T& maximum(T& | T& maximum(T& | ||
| Line 66: | Line 66: | ||
| ===== Templates συναρτήσεων με παραμέτρους σύνθετους τύπους (κλάσεις) ===== | ===== Templates συναρτήσεων με παραμέτρους σύνθετους τύπους (κλάσεις) ===== | ||
| - | Ας υποθέσουμε ότι θέλουμε να κάνουμε χρήση της παραπάνω συνάρτηση **maximum** προκειμένου να βρούμε το μέγιστο μεταξύ δύο φοιτητών. Η κλάση του φοιτητή δίνεται παρακάτω: | + | Ας υποθέσουμε ότι θέλουμε να κάνουμε χρήση της παραπάνω συνάρτηση **maximum** προκειμένου να βρούμε το μέγιστο μεταξύ δύο φοιτητών. Η κλάση |
| - | <code cpp Student.hpp> | + | Εφόσον προσθέσουμε την παραπάνω συνάρτηση υπεφόρτωσης του τελεστή %%>%% το πρόγραμμα εκτυπώνει τα εξής: |
| - | # | + | <code cpp find_max2.cpp> |
| + | #include <iostream> | ||
| + | #include " | ||
| + | using namespace std; | ||
| - | #ifndef _STUDENT_H_ | + | template < |
| - | #define _STUDENT_H_ | + | T& maximum(T& |
| - | class Student { | + | int main() { |
| - | char *name; | + | |
| - | | + | |
| - | + | ||
| - | public: | + | |
| - | Student(const char *name, int aem); | + | |
| - | Student(); | + | |
| - | Student(const Student& | + | |
| - | Student(const Student* ); | + | |
| - | ~Student(); | + | |
| - | char *getName() const; | + | |
| - | int getAEM() const; | + | |
| - | void setName(const char *name); | + | |
| - | void setAEM(int aem); | + | |
| - | friend std:: | + | |
| - | bool operator> | + | |
| - | Student& | + | |
| - | }; | + | |
| - | + | ||
| - | Student:: | + | |
| - | | + | |
| - | strcpy(this-> | + | |
| - | this-> | + | |
| - | } | + | |
| - | + | ||
| - | Student::Student(const Student& | + | |
| - | name = new char [strlen(st.name) + 1]; | + | |
| - | strcpy(name, st.name); | + | |
| - | aem = st.aem; | + | |
| - | } | + | |
| - | + | ||
| - | Student:: | + | |
| - | name = new char [strlen(st-> | + | |
| - | strcpy(name, st-> | + | |
| - | aem = st-> | + | |
| - | } | + | |
| - | + | ||
| - | Student:: | + | |
| - | this-> | + | |
| - | this-> | + | |
| - | } | + | |
| - | + | ||
| - | Student:: | + | |
| - | if(name != nullptr) | + | |
| - | delete []name; | + | |
| - | } | + | |
| - | + | ||
| - | char* Student:: | + | |
| - | return name; | + | |
| - | } | + | |
| - | + | ||
| - | int Student:: | + | |
| - | return aem; | + | |
| - | } | + | |
| - | + | ||
| - | void Student:: | + | |
| - | if(this-> | + | |
| - | delete this-> | + | |
| - | this-> | + | |
| - | strcpy(this-> | + | |
| - | } | + | |
| - | + | ||
| - | void Student:: | + | |
| - | this-> | + | |
| - | } | + | |
| - | + | ||
| - | Student& | + | |
| - | if(name != nullptr) | + | |
| - | delete name; | + | |
| - | name = new char [strlen(st.name) + 1]; | + | |
| - | strcpy(name, | + | |
| - | aem = st.aem; | + | |
| - | return *this; | + | |
| - | } | + | |
| - | + | ||
| - | std:: | + | |
| - | out << st.name << " " << st.aem; | + | |
| - | return out; | + | |
| - | } | + | |
| - | bool Student:: | + | cout << "max(' |
| - | if(aem > st.aem) | + | |
| - | return true; | + | |
| - | return false; | + | |
| } | } | ||
| - | #endif | ||
| - | </ | ||
| - | |||
| - | Εφόσον προσθέσουμε την παραπάνω συνάρτηση υπεφόρτωσης του τελεστή **< | ||
| - | < | ||
| - | max(' | ||
| </ | </ | ||
| Line 185: | Line 102: | ||
| Ο κώδικας χρήσης της παραπάνω συνάρτησης θα μπορούσε να είναι ο εξής: | Ο κώδικας χρήσης της παραπάνω συνάρτησης θα μπορούσε να είναι ο εξής: | ||
| - | <code cpp maximum3.cpp> | + | <code cpp find_max3.cpp> |
| #include < | #include < | ||
| using namespace std; | using namespace std; | ||
| + | |||
| + | #include " | ||
| template < | template < | ||
| Line 197: | Line 116: | ||
| return max; | return max; | ||
| } | } | ||
| - | |||
| - | #include " | ||
| int main() { | int main() { | ||
cpp/function_templates.1556944336.txt.gz · Last modified: 2019/05/04 03:32 (external edit)
