This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
cpp:class_templates [2019/05/03 14:40] gthanos created |
cpp:class_templates [2020/05/25 06:52] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Templates κλάσεων ====== | ||
| - | |||
| - | Σε αναλογία με τα templates συναρτήσεων μπορούμε να κατασκευάσουμε κλάσεις που να λαμβάνουν ως παράμετρο ένα ή περισσότερους τύπους δεδομένων. Στο παρακάτω παράδειγμα, | ||
| - | |||
| - | <code cpp Box.hpp> | ||
| - | template < | ||
| - | class Box { | ||
| - | T e; | ||
| - | public: | ||
| - | Box(T e); | ||
| - | T get() const; | ||
| - | void set(T e); | ||
| - | template < | ||
| - | friend std:: | ||
| - | }; | ||
| - | |||
| - | template < | ||
| - | Box< | ||
| - | this->e = e; | ||
| - | } | ||
| - | |||
| - | template < | ||
| - | T Box< | ||
| - | |||
| - | template < | ||
| - | void Box< | ||
| - | |||
| - | template < | ||
| - | std:: | ||
| - | out << t.get(); | ||
| - | return out; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | H παραπάνω κλάση μπορεί να παράγει διαφορετικούς τύπους δεδομένων, | ||
| - | |||
| - | <code cpp BoxUsage.cpp> | ||
| - | #include " | ||
| - | #include " | ||
| - | |||
| - | using namespace std; | ||
| - | |||
| - | int main() { | ||
| - | | ||
| - | Box< | ||
| - | Box< | ||
| - | Student george = {" | ||
| - | Box< | ||
| - | </ | ||
| - | |||
| - | |||