User Tools

Site Tools


cpp:constructors

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
cpp:constructors [2020/04/14 07:44] – [Χρήση member initialization list για την αρχικοποίηση των μελών της κλάσης] gthanoscpp:constructors [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 39: Line 39:
   return 0;   return 0;
 } }
-</code> 
- 
-Για την μεταγλώττιση αρκεί να μεταγλωττισετε κάθε επιμέρους κλάση ξεχωριστά και στη συνέχεια να δημιουργήσετε το τελικό εκτελέσιμο. Στο συγκεκριμένο παράδειγμα, η διαδικασία είναι η παρακάτω και παράγει το εκτελέσιμο με όνομα **a.out**: 
-<code> 
-g++ -Wall -g Rectangle.cpp -c 
-g++ -Wall -g Rectangle.o RectangleUsage.cpp  
 </code> </code>
  
Line 60: Line 54:
 </code> </code>
 </WRAP> </WRAP>
 +
 +=== Μεταγλώττιση ===
 +
 +Για την μεταγλώττιση αρκεί να μεταγλωττίσετε κάθε επιμέρους αρχείο κλάσης ξεχωριστά και στη συνέχεια να δημιουργήσετε το τελικό εκτελέσιμο. Στο συγκεκριμένο παράδειγμα, η διαδικασία είναι η παρακάτω και παράγει το εκτελέσιμο με όνομα **a.out**:
 +<code>
 +g++ -Wall -g Rectangle.cpp -c
 +g++ -Wall -g Rectangle.o RectangleUsage.cpp 
 +</code>
 +
  
 ===== Default κατασκευαστής ===== ===== Default κατασκευαστής =====
Line 146: Line 149:
 </code> </code>
  
-Ο παραπάνω τρόπος γραφής ονομάζεται στη βιβλιογραφία __member initilization list__. Τελικά η κλάση Rectangle μπορεί να γραφεί με χρήση //member initilization list// όπως παρακάτω:+Ο παραπάνω τρόπος γραφής ονομάζεται στη βιβλιογραφία __//member initilization list//__. Τελικά η κλάση Rectangle μπορεί να γραφεί με χρήση //member initilization list// όπως παρακάτω:
  
 <code cpp Rectangle.hpp> <code cpp Rectangle.hpp>
Line 166: Line 169:
     int getHeight() const;     int getHeight() const;
 }; };
 +</code>
 +
 +<code cpp Rectangle.cpp>
 +#include "Rectangle.hpp"
  
 Rectangle::Rectangle(int w, int h) : width(w), height(h) { Rectangle::Rectangle(int w, int h) : width(w), height(h) {
Line 186: Line 193:
 ===== Κλήση ενός κατασκευαστή μέσα από άλλο κατασκευαστή ===== ===== Κλήση ενός κατασκευαστή μέσα από άλλο κατασκευαστή =====
  
-Συχνά μπορεί να θέλουμε να καλέσουμε μέσα από ένα κατασκευαστή έναν άλλο κατασκευαστή. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας ως οποιαδήποτε άλλη μέθοδο. Στο προηγούμενο παράδειγμα, ο κατασκευαστής με τη μία παράμετρο καλεί εσωτερικά τον κατασκευαστή με τις δύο παραμέτρους ως εξής:+Συχνά μπορεί να θέλουμε να καλέσουμε μέσα από ένα κατασκευαστή έναν άλλο κατασκευαστή. Μπορείτε να το κάνετε αυτό όπως καλείτε οποιαδήποτε άλλη μέθοδο. Στο προηγούμενο παράδειγμα, ο κατασκευαστής με τη μία παράμετρο καλεί εσωτερικά τον κατασκευαστή με τις δύο παραμέτρους ως εξής:
  
 <code cpp> <code cpp>
Line 194: Line 201:
 </code> </code>
  
-ίδιος κώδικας με χρήση //initialization list// μπορεί να γραφεί ως εξής:+Ο ίδιος κώδικας με χρήση //member initialization list// μπορεί να γραφεί ως εξής:
  
 <code cpp> <code cpp>
Line 203: Line 210:
 ===== Αρχικοποίηση αντικειμένων που περιέχουν πεδία που περιγράφονται από κλάσεις ===== ===== Αρχικοποίηση αντικειμένων που περιέχουν πεδία που περιγράφονται από κλάσεις =====
  
-Στην προηγούμενη ενότητα είδαμε την κλάση Cuboid που περιγράφει την κλάση του κυβοειδούς και περιέχει ένα πεδίο τύπου Rectangle. Εδώ θα δούμε πως μπορούμε να ορίσουμε ένα ή περισσότερους κατασκευαστές για τη συγκεκριμένη κλάση.+Στην προηγούμενη ενότητα είδαμε την κλάση Cuboid που περιγράφει την κλάση του κυβοειδούς και περιέχει ένα πεδίο τύπου Rectangle. Εδώ θα δούμε πως μπορούμε να ορίσουμε ένα ή περισσότερους κατασκευαστές για την κλάση του κυβοειδούς.
  
 <code cpp Cuboid.hpp> <code cpp Cuboid.hpp>
Line 251: Line 258:
 </code> </code>
  
-Οι παραπάνω δύο κατασκευαστές με χρήση member initialιzation list μπορούν να γραφούν ως εξής:+Οι παραπάνω δύο κατασκευαστές με χρήση //member initialιzation list// μπορούν να γραφούν ως εξής:
  
 <code> <code>
Line 258: Line 265:
 </code> </code>
  
-Στον πρώτο κατασκευαστή με τα δύο ορίσματα γίνεται ανάθεση του αντικειμένου //r// στο πεδίο //rect//, αντιγράφοντας την τιμή κάθε πεδίου της παραμέτρου //r// στο πεδίιο //rect//. Στον 2ο κατασκευαστή με τα τρία ορίσματα καλείται ο κατασκευαστής της κλάσης //Rectangle// με ορίσματα //(w,h)//.+Στον πρώτο κατασκευαστή με τα δύο ορίσματα γίνεται ανάθεση του αντικειμένου //r// στο πεδίο //rect//, αντιγράφοντας κάθε πεδίο της παραμέτρου //r// στο αντίστοιχο πεδίο του //rect//. Στον δεύτερο κατασκευαστή με τα τρία ορίσματα καλείται ο κατασκευαστής της κλάσης //Rectangle// με ορίσματα //(w,h)//.
  
  
cpp/constructors.1586850253.txt.gz · Last modified: 2020/04/14 06:44 (external edit)