User Tools

Site Tools


cpp:namespace

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:namespace [2017/04/11 13:56] gthanoscpp:namespace [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Namespaces ======+====== Χώροι Ονομάτων (Namespaces======
  
-Προκειμένου να αποφεύγονται οι συγκρούσεις ονομάτων μεταξύ //global// μεταβλητών, κλάσεων ή συνάρτησεων η C++ ορίζει την έννοια του χώρου ονομάτων (//namespace//). Ένα //namespace// δίνει την δυνατότητα να ορίσουμε μεταβλητές, κλάσεις και μεθόδους σε ένα συγκεκριμένο χώρο ονομάτων. Η ύπαρξη πολλών //namespaces// δίνει την δυνατότητα να ορίσουμε δύο ή περισσότερες μεταβλητές, κλάσεις ή συναρτήσεις με το ίδιο όνομα που ανήκουν όμως σε διαφορετικούς χώρους ονομάτων.+Προκειμένου να αποφεύγονται οι συγκρούσεις ονομάτων μεταξύ //global// μεταβλητών, κλάσεων ή συνάρτησεων η C++ ορίζει την έννοια του χώρου ονομάτων (//namespace//). Ένας χώρος ονομάτων δίνει την δυνατότητα να ορίσουμε μεταβλητές, κλάσεις και μεθόδους μοναδικές μόνο για το συγκεκριμένο χώρο ονομάτων. Διαφορετικοί χώροι ονομάτων μπορεί να περιέχουν μεταβλητές, κλάσεις ή μεθόδους με τα ίδια ονόματα
  
 Ένα //namespace// ορίζεται ως εξής: Ένα //namespace// ορίζεται ως εξής:
Line 9: Line 9:
 } }
 </code> </code>
 +
 Για παράδειγμα Για παράδειγμα
 <code c++> <code c++>
 namespace constants { namespace constants {
-  const double var = 1.6180339887; +  const double golderRatio = 1.6180339887; 
-  double value() { return var; }+  double gRatio() { return golderRatio; }
 } }
 </code> </code>
  
-Η προσπέλαση των περιεχομένων ενός namespace μπορεί να γίνει με δύο τρόπους. +===== Προσπέλαση των στοιχείων του namespace ===== 
-  == δηλώνοντας το namespace σε κάθε κλήση των περιεχομένων του με την βοήθεια του τελεστή ''::'' ==+ 
 +Η προσπέλαση/χρήση των περιεχομένων ενός namespace μπορεί να γίνει με τους παρακάτω τρεις τρόπους! 
 + 
 +==== Δηλώνοντας το namespace σε κάθε κλήση των περιεχομένων του με την βοήθεια του τελεστή :: ==== 
 + 
 +<WRAP center round tip 80%> 
 +Ο τελεστής ''::'' ονομάζεται //scope operator//
 +</WRAP> 
 <code c++ namespace.cpp> <code c++ namespace.cpp>
 #include <iostream> #include <iostream>
Line 33: Line 42:
 } }
 </code> </code>
-  == με μία δήλωση στην αρχή του αρχείου των //namespaces// που θα χρησιμοποιηθούν ==+ 
 +==== Mε δήλωση μόνο των ονομάτων που θα χρησιμοποιηθούν ==== 
 + 
 +Χρησιμοποιούμε την έκφραση ''using namespace_name::var_name'', όπως παρακάτω: 
 <code c++ namespace.cpp> <code c++ namespace.cpp>
 #include <iostream> #include <iostream>
Line 43: Line 56:
 } }
  
-using namespace constants;+using constants::gRatio;
  
 int main() { int main() {
-  cout << "Golden Ratio: " << golderRatio << endl;+  cout << "Golden Ratio: " << constants::golderRatio << endl;
   cout << "Golden Ratio: " << gRatio() << endl;   cout << "Golden Ratio: " << gRatio() << endl;
 } }
 </code> </code>
  
-Δείτε τα σχετικά παραδείγματα που ακολουθούν.+==== Με δήλωση του namespace από το οποίο θα χρησιμοποιηθούν συγκεκριμένα ονόματα ==== 
 + 
 +Χρησιμοποιούμε την έκφραση ''using namespace namespace_name'', όπως παρακάτω: 
 +<code c++ namespace.cpp> 
 +#include <iostream> 
 +using namespace std;
  
-<code c++> 
 namespace constants { namespace constants {
   const double golderRatio = 1.6180339887;   const double golderRatio = 1.6180339887;
-  double gRatio() { return var; }+  double gRatio() { return golderRatio; }
 } }
 +
 using namespace constants; using namespace constants;
 +
 int main() { int main() {
-  cout << "Golden Ratio: " << constants:: golderRatio << endl; +  cout << "Golden Ratio: " << golderRatio << endl; 
-  cout << "Golden Ratio: " << constants:: eRatio << endl;+  cout << "Golden Ratio: " << gRatio() << endl;
 } }
 </code> </code>
  
-Παρακάτω δίνεται ένα παράδειγμα, όπου ορίζονται δύο διαφορετικά //namespaces// τα οποία όμως έχουν μία μεταβλητή και μία συνάρτηση με το ίδιο όνομα. Δείτε πως  +===== Παράδειγμα ορισμού και χρήσης μεταβλητών και μεθόδων με το ίδιο όνομα από δύο διαφορετικά namespaces ===== 
 + 
 +Στο παράδειγμα που ακολουθεί ορίζονται δύο //namespaces// τα οποία περιέχουν μία μεταβλητή και μία συνάρτηση με κοινό όνομα. Παρατηρήστε πως διακρίνουμε τις επιμέρους μεταβλητές με χρήση του ονόματος του αντίστοιχου //namespace// πριν από την χρήση κάθε μεταβλητής ή συνάρτησης.
  
 <code c++ nameVisibility.cpp> <code c++ nameVisibility.cpp>
cpp/namespace.1491918989.txt.gz · Last modified: 2017/04/11 12:56 (external edit)