This is an old revision of the document!
Table of Contents
Κλάσεις και Αντικείμενα
Όπως και στη Java οι κλάσεις στη C++ δημιουργούν νέους τύπους δεδομένων. Παρακάτω δίνεται το παράδειγμα της κλάσης Rectangle με παράλληλη δημιουργία ενός αντικειμένου της κλάσης αυτής.
- Rectangle.cpp
#include <iostream> using namespace std; class Rectangle { private: int width, height; public: void setWidth(int w); void setHeight(int h); int getWidth(); int getHeight(); }; void Rectangle::setWidth(int w) { width = w; } void Rectangle::setHeight(int h) { height = h; } int Rectangle::getWidth() { return width; } int Rectangle::getHeight() { return height; } int main () { Rectangle rect; rect.setWidth(5); rect.setHeight(6); cout << "area: " << rect.getWidth() * rect.getHeight() << endl; return 0; }
Η παραπάνω κλάση διαθέτει τα πεδία τύπου int width, height και τις μεθόδους setWidth, setHeight, getWidth, getHeight. Η κλάση δεν διαθέτει κατασκευαστή. Η δήλωση Rect rect;
στη μέθοδο main() δημιουργεί ένα αντικείμενο με κλήση του default κατασκευαστή.
Οι μέθοδοι της κλάσης
A member function of a class is a function that has its definition or its prototype within the class definition like any other variable. It operates on any object of the class of which it is a member, and has access to all the members of a class for that object.
Οι μέθοδοι της κλάσης είναι συναρτήσεις οι οποίες έχουν απευθείας πρόσβαση στα πεδία (μεταβλητές) της κλάσης. Οι μέθοδοι ορίζονται μέσα στην κλάση ή ορίζεται το πρότυπο τους μέσα στην κλάση και η υλοποίηση τους εκτός. Από το παραπάνω παράδειγμα παρατηρήστε τους δύο διαφορετικούς τρόπους ορισμού των μεθόδων setWidth και setHeight.
- Rectangle.cpp
#include <iostream> using namespace std; class Rectangle { private: int width, height; public: void setWidth(int w); void setHeight(int h) { height = h; } }; void Rectangle::setWidth(int w) { width = w; }
Οι δύο παραπάνω τρόποι ορισμού μίας μεθόδου της κλάσης είναι ισοδύναμοι με την διαφορά ότι η μέθοδος setHeight ορίζεται ως inline ακόμη και εάν η λέξη inline δεν αναφέρεται ρητά. Για τον ορισμό της μεθόδου setWidth εκτός της κλάσης είναι απαραίτητη η χρήση του ονόματος της κλάσης ακολουθούμενη από το scope operator (Rectangle::setWidth(int w)
). Η χρήση του scope operator εξασφαλίζει ότι η μέθοδος ανήκει στην κλάση και δεν αποτελεί αυτόνομη μέθοδο του προγράμματος.