User Tools

Site Tools


cpp:acccess_modifiers

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:acccess_modifiers [2018/05/02 08:06] – [Παράδειγμα χρήσης προσδιοριστών πρόσβασης] gthanoscpp:acccess_modifiers [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 8: Line 8:
   - **private:** Ένα μέλος της κλάσης που δηλώνεται ως //private// είναι προσβάσιμο μόνο από την κλάση στην οποία δηλώνεται και από τις φιλικές συναρτήσεις (//friend functions//) της κλάσης.   - **private:** Ένα μέλος της κλάσης που δηλώνεται ως //private// είναι προσβάσιμο μόνο από την κλάση στην οποία δηλώνεται και από τις φιλικές συναρτήσεις (//friend functions//) της κλάσης.
  
 +<WRAP tip 80% center round>
 +Εάν δεν οριστεί προσδιοριστής πρόσβασης σε μία κλάση τα πεδία και οι μέθοδοι της κλάσης ορίζονται ως //private//
 +</WRAP>
 ===== Παράδειγμα χρήσης προσδιοριστών πρόσβασης ===== ===== Παράδειγμα χρήσης προσδιοριστών πρόσβασης =====
  
 Δείτε το παρακάτω παράδειγμα χρήσης των προσδιοριστών πρόσβασης μέσω των κλάσεων //Cuboid// (κυβοειδές) και //Cube// (κύβος) που κληρονομεί την κλάση //Cuboid//. Δείτε το παρακάτω παράδειγμα χρήσης των προσδιοριστών πρόσβασης μέσω των κλάσεων //Cuboid// (κυβοειδές) και //Cube// (κύβος) που κληρονομεί την κλάση //Cuboid//.
  
-<code cpp Cuboid.cpp>+<code cpp Cuboid.hpp>
 #include <iostream> #include <iostream>
 using namespace std; using namespace std;
Line 21: Line 24:
   protected:   protected:
     int color;     int color;
 +  public:
 +    int borderWidth;
   public:   public:
     Cuboid(int w, int h, int l);     Cuboid(int w, int h, int l);
Line 44: Line 49:
 </code> </code>
  
-<code cpp Cube.cpp>+<code cpp Cube.hpp>
 #include <iostream> #include <iostream>
 using namespace std; using namespace std;
-#include "Cuboid.cpp"+#include "Cuboid.hpp"
  
 class Cube:Cuboid {  // Cube extends Cuboid   class Cube:Cuboid {  // Cube extends Cuboid  
Line 61: Line 66:
 void Cube::setSize(int s) { void Cube::setSize(int s) {
   setWidth(s);   setWidth(s);
 +  //width = s; // this does not compile
   setHeight(s);   setHeight(s);
   setLength(s);   setLength(s);
 } }
 </code> </code>
 +
 +Η δήλωση <code>class Cube:Cuboid {</code> δηλώνει ότι τη σχέση κληρονομικότητας μεταξύ των κλάσεων Cube και Cuboid (η κλάση Cube είναι απόγονος της κλάσης Cuboid).
  
 <code cpp CubeUsage.cpp> <code cpp CubeUsage.cpp>
-#include "Cube.cpp"+#include "Cube.hpp"
  
 int main() { int main() {
   Cuboid cuboid(1,2,3);   Cuboid cuboid(1,2,3);
 +  //cuboid.color = 0xFF0000 // this does not compile
 +  cuboid.borderWidth = 5;
 +  
   Cube cube(1, 0xcccccc);   Cube cube(1, 0xcccccc);
   cuboid.setWidth(5);   cuboid.setWidth(5);
Line 81: Line 92:
   - Τα πεδία //width//, //height// και //length// της κλάσης //Cuboid// είναι ορισμένα ως //private// και δεν είναι ορατά από τη συνάρτηση //main// ή την κλάση //Cube//   - Τα πεδία //width//, //height// και //length// της κλάσης //Cuboid// είναι ορισμένα ως //private// και δεν είναι ορατά από τη συνάρτηση //main// ή την κλάση //Cube//
   - Το πεδίο //color// είναι ορισμένο ως //protected// και είναι ορατό από την υποκλάση //Cube//, όχι όμως και από τη //main//.   - Το πεδίο //color// είναι ορισμένο ως //protected// και είναι ορατό από την υποκλάση //Cube//, όχι όμως και από τη //main//.
-  - Η μέθοδος //setWidth// είναι ορισμένη ως //public// και είναι ορατή από τη μέθοδο //main// και από την υποκλάση //Cube//.+  - Η μέθοδος //setWidth// είναι ορισμένη ως //public// και είναι ορατή από τη μέθοδο //main// και από την υποκλάση //Cube//. Το ίδιο ισχύει και για το //public// πεδίο //borderWidth//.
 </WRAP> </WRAP>
  
cpp/acccess_modifiers.1525248401.txt.gz · Last modified: 2018/05/02 07:06 (external edit)