initializer lists c
Εξερευνήστε τα πάντα για τις λίστες Initializer στο C ++ με αναλυτικά παραδείγματα.
Το C ++ χρησιμοποιεί λίστες αρχικοποιητών για να προετοιμάσει τα μέλη των δεδομένων στις τιμές τους.
Οι λίστες αρχικοποιητών χρησιμοποιούνται κυρίως σε συγκεκριμένες καταστάσεις όπου δεν είναι δυνατή η αρχικοποίηση των τιμών στο σώμα του κατασκευαστή.
sql συνεντεύξεις ερωτήσεις και απαντήσεις για τους νεότερους
=> Κάντε κλικ εδώ για το δωρεάν μάθημα C ++.
Λίστες Initializer στο C ++
Η γενική σύνταξη της λίστας Initializer είναι:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Μερικές από αυτές τις καταστάσεις όπου χρησιμοποιούνται οι λίστες αρχικοποιητών παρατίθενται παρακάτω:
# 1) Δεν παρέχεται προεπιλεγμένος κατασκευαστής για την κατηγορία αντικειμένων μελών.
Όταν έχουμε ένα άλλο αντικείμενο κλάσης ως μέλος της κλάσης και η κλάση αυτού του αντικειμένου δεν έχει τον προεπιλεγμένο κατασκευαστή, τότε αρχικοποιούμε αυτό το αντικείμενο μέλους δεδομένων χρησιμοποιώντας τη λίστα αρχικοποιητή.
Αυτό φαίνεται στο ακόλουθο πρόγραμμα.
#include using namespace std; class A { int i; public: A(int ); }; A::A(int val) { i = val; cout << 'Constructor ::A ; i = ' << i << endl; } class B { A a; public: B(int ); }; B::B(int val):a(val) { cout << 'Constructor :: B'; } int main() { B obj(10); return 0; }
Παραγωγή:
Κατασκευαστής :: Α; i = 10
Κατασκευαστής :: B
Στο παραπάνω πρόγραμμα, το αντικείμενο της κλάσης Α είναι μέλος δεδομένων της κλάσης Β. Στην κατηγορία Α, έχουμε έναν παραμετροποιημένο κατασκευαστή αλλά όχι έναν προεπιλεγμένο κατασκευαστή. Επομένως, πρέπει να χρησιμοποιήσουμε τη λίστα αρχικοποιητών στην κλάση Β, προκειμένου να δημιουργήσουμε ένα αντικείμενο κλάσης Α.
# 2) Αρχικοποίηση Γ τα μέλη δεδομένων μας.
Καθώς τα μέλη δεδομένων const μπορούν να αρχικοποιηθούν μόνο μία φορά, τα προετοιμάζουμε χρησιμοποιώντας τη λίστα αρχικοποιητών.
Το αποδεικνύουμε χρησιμοποιώντας το ακόλουθο παράδειγμα.
#include using namespace std; class sample { private: const int val; public: sample(int val):val(val) { cout << 'Value is ' << val; } }; int main() { sample obj(10); }
Παραγωγή:
Η τιμή είναι 10
Στο παραπάνω πρόγραμμα, έχουμε ένα const ως μέλος δεδομένων. Εάν πρέπει να αρχικοποιήσουμε αυτό το μέλος const σε μια τιμή, τότε το κάνουμε χρησιμοποιώντας τη λίστα αρχικοποιητών όπως φαίνεται.
# 3) Για την προετοιμασία των τύπων δεδομένων αναφοράς.
Όπως οι σταθερές, οι αναφορές είναι αμετάβλητες. Έτσι, όποτε χρειαζόμαστε να αρχικοποιήσουμε τα μέλη δεδομένων τύπου αναφοράς, χρησιμοποιούμε λίστες αρχικοποιητών.
Στο ακόλουθο πρόγραμμα, αρχικοποιούμε το μέλος δεδομένων αναφοράς χρησιμοποιώντας τη λίστα αρχικοποιητών.
#include using namespace std; class sample { private: int &ref_val; public: sample(int &ref_val):ref_val(ref_val) { cout << 'Value is ' << ref_val; } }; int main() { int ref=10; sample obj(ref); return 0; }
Παραγωγή:
Η τιμή είναι 10
Σε αυτό το πρόγραμμα, έχουμε μια αναφορά ως μέλος δεδομένων και την προετοιμάζουμε χρησιμοποιώντας τη λίστα αρχικοποιητών.
# 4) Όταν το όνομα μέλους και η παράμετρος έχουν το ίδιο όνομα.
ποιο είναι το καλύτερο πρόγραμμα ενημέρωσης προγραμμάτων οδήγησης
Όταν τα ονόματα μελών μιας κλάσης πρόκειται να αρχικοποιηθούν με τις παραμέτρους και αυτές οι παράμετροι έχουν τα ίδια ονόματα με τα ονόματα μελών, χρησιμοποιούμε τη λίστα αρχικοποιητών. Στα προηγούμενα θέματα, χρησιμοποιήσαμε αυτόν τον δείκτη για την ίδια κατάσταση. Η δεύτερη επιλογή είναι η λίστα αρχικοποιητών.
Έχουμε τροποποιήσει το παραπάνω παράδειγμα με αυτόν τον δείκτη για να χρησιμοποιήσουμε τη λίστα αρχικοποιητών στο ακόλουθο πρόγραμμα.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Παραγωγή:
αριθμός = 100
ch = Α

Σε αυτό το πρόγραμμα, περνάμε παραμέτρους για να αρχικοποιήσουμε τα μέλη δεδομένων με τα ίδια ονόματα. Σε αυτήν την περίπτωση, χρησιμοποιούμε τη λίστα αρχικοποιητών για το σκοπό αυτό.
# 5) Για να βελτιώσετε την απόδοση
Κάθε φορά που αρχικοποιούμε τα μέλη δεδομένων στο σώμα του κατασκευαστή, δημιουργείται ένα προσωρινό αντικείμενο για το μέλος δεδομένων, ενώ εκχωρούνται τιμές. Μόλις ολοκληρωθεί η ανάθεση, αυτό το προσωρινό αντικείμενο διαγράφεται. Αυτό είναι στην πραγματικότητα ένα γενικό κόστος.
Εάν χρησιμοποιούμε τη λίστα αρχικοποιητών, από την άλλη πλευρά, χρησιμοποιείται ένας κατασκευαστής αντιγράφων για την εκχώρηση τιμών. Αυτό βελτιώνει σημαντικά την απόδοση.
συμπέρασμα
Έτσι, σε αυτό το σεμινάριο, μάθαμε για τις λίστες αρχικοποιητών μαζί με πολλές καταστάσεις στις οποίες πρέπει να τις χρησιμοποιήσουμε στον προγραμματισμό C ++.
Αν και δεν χρειάζεται να χρησιμοποιήσουμε τη λίστα αρχικοποιητών όταν αυτές οι καταστάσεις δεν υπάρχουν, μπορούμε πάντα να τις χρησιμοποιήσουμε για να βελτιώσουμε την απόδοση του προγράμματος.
Στο επερχόμενο σεμινάριό μας, θα συζητήσουμε λεπτομερώς τις λειτουργίες φίλων στο C ++.
=> Δείτε εδώ για να εξερευνήσετε την πλήρη λίστα μαθημάτων C ++.
Συνιστώμενη ανάγνωση