User Tools

Site Tools


cpp:classes

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
cpp:classes [2020/04/12 15:08] – [Πεδία που περιγράφονται από κλάσεις] gthanoscpp:classes [2020/04/14 07:31] – [Οι μέθοδοι της κλάσης] gthanos
Line 98: Line 98:
 Οι δύο παραπάνω τρόποι ορισμού μιας μεθόδου της κλάσης είναι ισοδύναμοι με την διαφορά ότι η μέθοδος //setHeight// ορίζεται ως //inline// ακόμη και εάν η λέξη //inline// δεν αναφέρεται ρητά. Ο λόγος που η //setHeight// γίνεται //inline// είναι για να αποφευχθεί το πρόβλημα των περισσότερων του ενός ορισμών της ίδιας μεθόδου σε επιμέρους μεταγλωττισμένα αρχεία του ιδίου προγράμματος. Ο //compiler// προλαμβάνει το συγκεκριμένο πρόβλημα κάνοντας την μέθοδο //inline//. Οι δύο παραπάνω τρόποι ορισμού μιας μεθόδου της κλάσης είναι ισοδύναμοι με την διαφορά ότι η μέθοδος //setHeight// ορίζεται ως //inline// ακόμη και εάν η λέξη //inline// δεν αναφέρεται ρητά. Ο λόγος που η //setHeight// γίνεται //inline// είναι για να αποφευχθεί το πρόβλημα των περισσότερων του ενός ορισμών της ίδιας μεθόδου σε επιμέρους μεταγλωττισμένα αρχεία του ιδίου προγράμματος. Ο //compiler// προλαμβάνει το συγκεκριμένο πρόβλημα κάνοντας την μέθοδο //inline//.
  
-Για τον ορισμό της μεθόδου //setWidth// εκτός της κλάσης είναι απαραίτητη η χρήση του ονόματος της κλάσης ακολουθούμενη από το //scope operator// **Rectangle::**setWidth(int w). Η χρήση του //scope operator// εξασφαλίζει ότι η μέθοδος ανήκει στην κλάση και δεν αποτελεί αυτόνομη μέθοδο του προγράμματος.+Για τον ορισμό της μεθόδου //setWidth// εκτός της κλάσης είναι απαραίτητη η χρήση του ονόματος της κλάσης ακολουθούμενη από το //scope operator// **Rectangle::**setWidth(int w). Η χρήση του //scope operator// εξασφαλίζει ότι η μέθοδος ανήκει στην κλάση και δεν αποτελεί αυτόνομη συνάρτηση του προγράμματος.
  
 Παρατηρήστε ότι οι μέθοδοι //getWidth// και //getHeight// έχουν το προσδιοριστή **const** αμέσως μετά τη δήλωση τους. Ο προσδιοριστής //const// σε αυτή την περίπτωση, δηλώνει ότι η συγκεκριμένη συνάρτηση **δεν μεταβάλλει το αντικείμενο στο οποίο ανήκει**. Η χρήση του προσδιοριστή //const// αποτελεί α) προστασία προς τον προγραμματιστή που υλοποιεί τη μέθοδο, ώστε σε περίπτωση που προσπαθήσει να γράψει ένα πεδίο της κλάσης η μεταγλώττιση να αποτύχει εμφανίζοντας μήνυμα λάθους και β) δήλωση προς τους προγραμματιστές-χρήστες της κλάσης ότι η συγκεκριμένη συνάρτηση δεν θα μεταβάλλει με οποιονδήποτε τρόπο την κατάσταση του αντικειμένου. Παρατηρήστε ότι οι μέθοδοι //getWidth// και //getHeight// έχουν το προσδιοριστή **const** αμέσως μετά τη δήλωση τους. Ο προσδιοριστής //const// σε αυτή την περίπτωση, δηλώνει ότι η συγκεκριμένη συνάρτηση **δεν μεταβάλλει το αντικείμενο στο οποίο ανήκει**. Η χρήση του προσδιοριστή //const// αποτελεί α) προστασία προς τον προγραμματιστή που υλοποιεί τη μέθοδο, ώστε σε περίπτωση που προσπαθήσει να γράψει ένα πεδίο της κλάσης η μεταγλώττιση να αποτύχει εμφανίζοντας μήνυμα λάθους και β) δήλωση προς τους προγραμματιστές-χρήστες της κλάσης ότι η συγκεκριμένη συνάρτηση δεν θα μεταβάλλει με οποιονδήποτε τρόπο την κατάσταση του αντικειμένου.
cpp/classes.txt · Last modified: 2021/05/06 23:01 (external edit)