Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 13940|Απάντηση: 0

[Γ++] Σκέφτομαι τα πρότυπα στη C++

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 4/10/2014 8:45:19 μ.μ. | | |
Σε γλώσσες υψηλού επιπέδου, χρησιμοποιούμε υπερφόρτωση για συναρτήσεις, η οποία χρησιμοποιείται σε συναρτήσεις με διαφορετικές συναρτήσεις αλλά με τον ίδιο αριθμό παραμέτρων, και απαιτούνται πρότυπα για διαφορετικούς τύπους και τον ίδιο αριθμό παραμέτρων
Μικροεφαρμογή C++

  1. #include<iostream>
  2. using namespace std;

  3. template <class T>
  4. T max(T a,T b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a,b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Αντιγραφή κώδικα

Αυτό είναι ένα απλό παράδειγμα: η λέξη-κλειδί template<class T> είναι η αρχή μιας δομής προτύπου, έτσι ώστε να μην χρειάζεται να γράφουμε πολλούς κώδικες C++ με την ίδια συνάρτηση επανειλημμένα όταν αναζητούμε τη μέγιστη τιμή
Σημειώστε ότι όταν καλείτε μια συνάρτηση, ο τύπος της ταιριάζει αυτόματα. Δεν χρειάζεται να εμφανιστεί.
Η παραπάνω είναι η πιο βασική χρήση, αλλά θα συναντήσουμε τις εξής καταστάσεις

  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Αντιγραφή κώδικα

Τι να κάνουμε όταν η συνάρτησή μας χρειάζεται δύο διαφορετικούς τύπους, νομίζω ότι μπορείτε να το καταλάβετε αφού διαβάσετε τον παραπάνω κώδικα. Αλλά ούτως ή άλλως, αυτό που έχουν κοινό είναι ότι οι τύποι ταιριάζουν αυτόματα.
Μάλιστα, έχουμε και λάθη, αν δεν μπορούμε να ταιριάξουμε καλά τον τύπο, δηλαδή «το κεφάλι του ταύρου δεν είναι σωστό», τότε η αυτόματη αντιστοίχιση του μεταγλωττιστή θα αλλάξει τον τύπο παραμέτρου σύμφωνα με τους κανόνες της σιωπηρής μετατροπής τύπου, κάτι που τελικά θα οδηγήσει σε απώλεια ακρίβειας του αποτελέσματος.
Κοιτάξτε τον κώδικα, μπορείτε να δοκιμάσετε.
  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Αντιγραφή κώδικα
Το παραπάνω περιεχόμενο δεν είναι πολύ δύσκολο, αλλά υπάρχουν και πολλά μέρη που μπορούν να εξερευνηθούν, δεν ξέρω ποιες είναι οι απόψεις σας





Προηγούμενος:c Μίνι πρόγραμμα γραμμένο από την Inline
Επόμενος:Δημοσίευσα ένα λογότυπο που φτιάχτηκε για το φόρουμ μου και το έδειξα σε όλους!
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com