Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Τα “Access Specifiers” στη γλώσσα C++ είναι λέξεις-κλειδιά που χρησιμοποιούνται για τον έλεγχο της πρόσβασης σε μέλη (μεταβλητές και συναρτήσεις) μιας κλάσης. Υπάρχουν τρία είδη “Access Specifiers” στην C++: το “public”, το “private” και το “protected”.

Το “public” είναι ορίζει ότι τα μέλη μιας κλάσης είναι προσβάσιμα από οποιοδήποτε μέρος του προγράμματος. Αυτό σημαίνει ότι μπορούν να προσπελαστούν και να τροποποιηθούν από άλλες κλάσεις ή συναρτήσεις.

Το “private” ορίζει ότι τα μέλη είναι ιδιωτικά και δεν μπορούν να προσπελαστούν ή να τροποποιηθούν από κώδικα εκτός της κλάσης. Μόνο οι μέθοδοι της κλάσης μπορούν να έχουν πρόσβαση σε ιδιωτικά μέλη.

Το “protected” είναι παρόμοιο με το “private”, αλλά επιτρέπει την πρόσβαση σε μέλη από κλάσεις που κληρονομούν από την αρχική κλάση. Με άλλα λόγια, τα προστατευμένα μέλη είναι προσπελάσιμα μόνο από την κλάση και τις υποκλάσεις της.

Η χρήση των “Access Specifiers” είναι σημαντική για τον έλεγχο της πρόσβασης και της ασφάλειας του κώδικα, καθώς επιτρέπει την καλύτερη οργάνωση και την προστασία των δεδομένων μιας κλάσης.

Μέχρι τώρα, είστε αρκετά εξοικειωμένοι με τη δηλωτική λέξη public που εμφανίζεται σε όλα τα παραδείγματα κλάσεων:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
class MyClass { // Ορίζουμε την κλάση
public: // Δημόσια χαρακτηριστικά
int x; // Χαρακτηριστικό
void myMethod() { // Μέθοδος
cout << "Hello World!";
}
};
class MyClass { // Ορίζουμε την κλάση public: // Δημόσια χαρακτηριστικά int x; // Χαρακτηριστικό void myMethod() { // Μέθοδος cout << "Hello World!"; } };
class MyClass {        // Ορίζουμε την κλάση
  public:              // Δημόσια χαρακτηριστικά
    int x;             // Χαρακτηριστικό
    void myMethod() {  // Μέθοδος
      cout << "Hello World!";
    }
};

Τα “Access Specifiers” στη γλώσσα C++ είναι λέξεις-κλειδιά που χρησιμοποιούνται για να ρυθμίσουν την πρόσβαση σε μέλη (μεταβλητές και συναρτήσεις) μιας κλάσης. Στη C++ υπάρχουν τρία είδη “Access Specifiers”: το “public”, το “private” και το “protected”.

Το “public” ορίζει ότι τα μέλη μιας κλάσης είναι προσβάσιμα από οποιοδήποτε μέρος του προγράμματος. Αυτό σημαίνει ότι μπορούν να προσπελαστούν και να τροποποιηθούν από άλλες κλάσεις ή συναρτήσεις.

Το “private” ορίζει ότι τα μέλη είναι ιδιωτικά και δεν μπορούν να προσπελαστούν ή να τροποποιηθούν από κώδικα εκτός της κλάσης. Μόνο οι μέθοδοι της κλάσης έχουν πρόσβαση σε ιδιωτικά μέλη.

Το “protected” είναι παρόμοιο με το “private”, αλλά επιτρέπει την πρόσβαση σε μέλη από κλάσεις που κληρονομούν από την αρχική κλάση. Με άλλα λόγια, τα προστατευμένα μέλη είναι προσπελάσιμα μόνο από την κλάση και τις υποκλάσεις της.

Η χρήση των “Access Specifiers” είναι σημαντική για τον έλεγχο της πρόσβασης και την ασφάλεια του κώδικα, καθώς επιτρέπει την καλύτερη οργάνωση και προστασία των δεδομένων μιας κλάσης.

Για να δηλώσετε την πρόσβαση σε ένα χαρακτηριστικό ή μια μέθοδο, πρέπει να τοποθετήσετε τη δηλωτική λέξη πρόσβασης πριν από το χαρακτηριστικό ή τη μέθοδο:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
class MyClass {
public: // Δηλώνουμε δημόσια χαρακτηριστικά και μέθοδο
int x; // Δημόσια μεταβλητή
void myMethod() {
cout << "Hello World!";
} // Δημόσια μέθοδος
private: // Δηλώνουμε ιδιωτικό χαρακτηριστικό
int y; // Ιδιωτική μεταβλητή
};
int main() {
MyClass myObj; // Δημιουργούμε ένα αντικείμενο της κλάσης MyClass
myObj.x = 25; // Επιτρέπεται, γιατί το x είναι δημόσιο
myObj.y = 50; // Δεν επιτρέπεται, γιατί το y είναι ιδιωτικό
return 0;
}
class MyClass { public: // Δηλώνουμε δημόσια χαρακτηριστικά και μέθοδο int x; // Δημόσια μεταβλητή void myMethod() { cout << "Hello World!"; } // Δημόσια μέθοδος private: // Δηλώνουμε ιδιωτικό χαρακτηριστικό int y; // Ιδιωτική μεταβλητή }; int main() { MyClass myObj; // Δημιουργούμε ένα αντικείμενο της κλάσης MyClass myObj.x = 25; // Επιτρέπεται, γιατί το x είναι δημόσιο myObj.y = 50; // Δεν επιτρέπεται, γιατί το y είναι ιδιωτικό return 0; }
class MyClass {
  public:          // Δηλώνουμε δημόσια χαρακτηριστικά και μέθοδο
    int x;         // Δημόσια μεταβλητή
    void myMethod() {
      cout << "Hello World!";
    }               // Δημόσια μέθοδος
  private:         // Δηλώνουμε ιδιωτικό χαρακτηριστικό
    int y;         // Ιδιωτική μεταβλητή
};

int main() {
  MyClass myObj;   // Δημιουργούμε ένα αντικείμενο της κλάσης MyClass
  myObj.x = 25;    // Επιτρέπεται, γιατί το x είναι δημόσιο
  myObj.y = 50;    // Δεν επιτρέπεται, γιατί το y είναι ιδιωτικό
  return 0;
}

Ο παραπάνω κώδικας δημιουργεί μια κλάση με το όνομα MyClass, η οποία περιέχει δύο μεταβλητές και μια μέθοδο. Οι μεταβλητές είναι x και y, ενώ η μέθοδος ονομάζεται myMethod.

Οι μεταβλητές x και y έχουν διαφορετικά επίπεδα προσπέλασης. Η x δηλώνεται ως δημόσια (public), επομένως είναι προσπελάσιμη από τον κώδικα έξω από την κλάση. Αντίθετα, η y δηλώνεται ως ιδιωτική (private), άρα μπορεί να προσπελαστεί μόνο από μέθοδους της ίδιας της κλάσης.

Η μέθοδος myMethod είναι μια απλή μέθοδος που εκτυπώνει το μήνυμα “Hello World!” χρησιμοποιώντας την cout.

Στην main συνάρτηση δημιουργείται ένα αντικείμενο της κλάσης MyClass με το όνομα myObj. Έπειτα, η μεταβλητή x του αντικειμένου myObj εκχωρείται η τιμή 25, καθώς είναι δημόσια και προσπελάσιμη. Ωστόσο, η μεταβλητή y δεν μπορεί να αποκτήσει τιμή από τον κώδικα της main, καθώς είναι ιδιωτική.

Τελικά, η main συνάρτηση επιστρέφει την τιμή 0, υποδηλώνοντας ότι το πρόγραμμα ολοκληρώθηκε επιτυχώς.

Παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <iostream>
using namespace std;
class MyClass {
public:
int x; // Δημόσια μεταβλητή
void publicMethod() {
cout << "This is a public method." << endl;
} // Δημόσια μέθοδος
private:
int y; // Ιδιωτική μεταβλητή
void privateMethod() {
cout << "This is a private method." << endl;
} // Ιδιωτική μέθοδος
};
int main() {
MyClass myObj;
myObj.x = 25; // Επιτρέπεται, γιατί το x είναι δημόσιο
myObj.publicMethod(); // Επιτρέπεται, γιατί η publicMethod είναι δημόσια
// myObj.y = 50; // Δεν επιτρέπεται, γιατί το y είναι ιδιωτικό
// myObj.privateMethod(); // Δεν επιτρέπεται, γιατί η privateMethod είναι ιδιωτική
return 0;
}
#include <iostream> using namespace std; class MyClass { public: int x; // Δημόσια μεταβλητή void publicMethod() { cout << "This is a public method." << endl; } // Δημόσια μέθοδος private: int y; // Ιδιωτική μεταβλητή void privateMethod() { cout << "This is a private method." << endl; } // Ιδιωτική μέθοδος }; int main() { MyClass myObj; myObj.x = 25; // Επιτρέπεται, γιατί το x είναι δημόσιο myObj.publicMethod(); // Επιτρέπεται, γιατί η publicMethod είναι δημόσια // myObj.y = 50; // Δεν επιτρέπεται, γιατί το y είναι ιδιωτικό // myObj.privateMethod(); // Δεν επιτρέπεται, γιατί η privateMethod είναι ιδιωτική return 0; }
#include <iostream>
using namespace std;

class MyClass {
  public:        
    int x;  // Δημόσια μεταβλητή
    
    void publicMethod() {
      cout << "This is a public method." << endl;
    }  // Δημόσια μέθοδος
    
  private:       
    int y;  // Ιδιωτική μεταβλητή
    
    void privateMethod() {
      cout << "This is a private method." << endl;
    }  // Ιδιωτική μέθοδος
};

int main() {
  MyClass myObj;
  myObj.x = 25;              // Επιτρέπεται, γιατί το x είναι δημόσιο
  myObj.publicMethod();      // Επιτρέπεται, γιατί η publicMethod είναι δημόσια
  // myObj.y = 50;          // Δεν επιτρέπεται, γιατί το y είναι ιδιωτικό
  // myObj.privateMethod();  // Δεν επιτρέπεται, γιατί η privateMethod είναι ιδιωτική
  return 0;
}

Ο παραπάνω κώδικας δημιουργεί μια κλάση με το όνομα MyClass, η οποία περιέχει δημόσια και ιδιωτικά χαρακτηριστικά και μεθόδους.

Η κλάση έχει ένα δημόσιο χαρακτηριστικό με το όνομα x, τύπου int. Επίσης, περιλαμβάνει μια δημόσια μέθοδο με το όνομα publicMethod, η οποία εκτυπώνει ένα μήνυμα.

Επιπλέον, η κλάση έχει ένα ιδιωτικό χαρακτηριστικό με το όνομα y, τύπου int. Υπάρχει επίσης μια ιδιωτική μέθοδος με το όνομα privateMethod, η οποία εκτυπώνει ένα μήνυμα.

Στην συνάρτηση main, δημιουργείται ένα αντικείμενο της κλάσης MyClass με το όνομα myObj. Στη συνέχεια, γίνεται η πρόσβαση στο δημόσιο χαρακτηριστικό x του αντικειμένου και του ανατίθεται η τιμή 25. Επίσης, καλείται η δημόσια μέθοδος publicMethod(), η οποία εκτυπώνει το μήνυμα “This is a public method.”.

Οι γραμμές που έχουν σχολιαστεί με // δεν εκτελούνται, καθώς προσπαθούν να προσπελάσουν το ιδιωτικό χαρακτηριστικό y και να καλέσουν την ιδιωτική μέθοδο privateMethod(), τα οποία δεν είναι προσβάσιμα από τη συνάρτηση main.

27 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων