Προς το περιεχόμενο

Πως χρησιμοποιείς Tamplates σε κλάσεις???


oksosaa

Προτεινόμενες αναρτήσεις

Δημοσ.

Τα templates συνήθως χρησιμοποιούνται όταν θέλεις να υλοποιήσεις κάποιον αλγόριθμο ή κάποια δομή δεδομένων ανεξάρτητα από τον τύπο μιας μεταβλητής. Η STL είναι γεμάτη από τέτοιες δομές π.χ. vector, list, deque. Ένα κλασσικό παράδειγμα είναι και το ακόλουθο:

>#include <iostream>

template<typename T>
inline const T& Max(const T& left, const T& right)
{
return left < right ? right : left;
}

int main()
{
int num = 45;
std::cout << Max(num, 22) << '\n';

float fnum = .8f;
std::cout << Max(3.15f, fnum) << '\n';

return 0;
}

Επίσης είναι δυνατόν μέσω των templates να υλοποιήσεις στατικό πολυμορφισμό χωρις να υπάρχουν base και derived κλάσεις.

 

>#include <iostream>

class Foo
{
public:
Foo(){}
void SayHello() const
{
	std::cout << "Foo" << '\n';
}
};

class Bar
{
public:
Bar(){}
void SayHello() const
{
	std::cout << "Bar" << '\n';
}
};

template <typename T>
void FooBar(const T& obj)
{
obj.SayHello();
}

int main()
{
Foo foo;
FooBar(foo);

Bar bar;
FooBar(bar);

return 0;
}

 

Αυτά ήταν κάποια παραδείγματα. Καλύτερα είναι όμως να διαβάσεις κάποιο (καλό) βιβλίο γιατί δεν μπορεί να καλυφθεί το θέμα των templates σε μερικά posts.

Δημοσ.

Αν έχεις να μου προτείνεις κάτι καλό θα ήταν.Η κάποιο tutorial.

Εχω κάποια βιβλία αλλά τα έχει περιλιπτικά.

Είναι βασικά τα templetes για τον αντικειμενοστραφή προγραμματισμό?

Δημοσ.

Ένα βιβλίο αποκλειστικά για templates είναι το παρακάτω:

http://www.amazon.com/Templates-Complete-Guide-David-Vandevoorde/dp/0201734842/ref=sr_1_1?ie=UTF8&s=books&qid=1267193037&sr=8-1

Βέβαια η ανάγνωσή του είναι λίγο δύσκολη γιατί τις περισσότερες φορές έχει κάποια σύντομα παραδείγματα και όχι ολοκληρωμένα προγράμματα.

 

Λίγο πιο κατανοητά είναι στο παρακάτω βιβλίο:

http://www.amazon.com/Primer-4th-Stanley-B-Lippman/dp/0201721481/ref=sr_1_1?ie=UTF8&s=books&qid=1267193842&sr=1-1

Το θέμα εδώ είναι ότι το βιβλίο αφιερώνει ένα κεφάλαιο για templates, και δεν ξέρω αν θέλεις να το αγοράσεις και για πιο σκοπό το θέλεις, ή αν μπορείς να δανειστείς από κάποια βιβλιοθήκη.

 

Τώρα αν ψάχνεις για κάποιο tutorial δες εδώ:

http://www.cplusplus.com/doc/tutorial/templates/'>http://www.cplusplus.com/doc/tutorial/templates/

Γενικά το πρώτο σημείο για να ψάξεις οτιδήποτε έχει σχέση με C++ είναι το site: http://www.cplusplus.com

 

Τέλος ο αντικειμενοστραφής προγραμματισμός δεν περιορίζεται από κάποια γλώσσα ή απο κάποια χαρακτηριστικά μιας γλώσσας. Όταν θα χρειαστείς δυναμικό πολυμορφισμό τότε θα είναι μονόδρομος η υλοποίηση μέσω κληρονομικότητας. Στατικός πολυμορφισμός μπορεί να υλοποιηθεί και με templates.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...