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 revision Previous revision
Previous revision
cpp:namespace [2021/04/27 07:46]
gthanos [Χώροι Ονομάτων (Namespaces)]
cpp:namespace [2021/05/06 22:52]
Line 1: Line 1:
-====== Χώροι Ονομάτων (Namespaces) ====== 
- 
-Προκειμένου να αποφεύγονται οι συγκρούσεις ονομάτων μεταξύ //global// μεταβλητών, κλάσεων ή συνάρτησεων η C++ ορίζει την έννοια του χώρου ονομάτων (//namespace//). Ένας χώρος ονομάτων δίνει την δυνατότητα να ορίσουμε μεταβλητές, κλάσεις και μεθόδους μοναδικές μόνο για το συγκεκριμένο χώρο ονομάτων. Διαφορετικοί χώροι ονομάτων μπορεί να περιέχουν μεταβλητές, κλάσεις ή μεθόδους με τα ίδια ονόματα.  
- 
-Ένα //namespace// ορίζεται ως εξής: 
-<code c++> 
-namespace identifier { 
-  named_entities 
-} 
-</code> 
- 
-Για παράδειγμα 
-<code c++> 
-namespace constants { 
-  const double golderRatio = 1.6180339887; 
-  double gRatio() { return golderRatio; } 
-} 
-</code> 
- 
-===== Προσπέλαση των στοιχείων του namespace ===== 
- 
-Η προσπέλαση/χρήση των περιεχομένων ενός namespace μπορεί να γίνει με τρεις τρόπους. 
- 
-=== Δηλώνοντας το namespace σε κάθε κλήση των περιεχομένων του με την βοήθεια του τελεστή :: === 
- 
-<WRAP center round tip 80%> 
-Ο τελεστής ''::'' ονομάζεται //scope operator//. 
-</WRAP> 
- 
-<code c++ namespace.cpp> 
-#include <iostream> 
-using namespace std; 
- 
-namespace constants { 
-  const double golderRatio = 1.6180339887; 
-  double gRatio() { return golderRatio; } 
-} 
- 
-int main() { 
-  cout << "Golden Ratio: " << constants::golderRatio << endl; 
-  cout << "Golden Ratio: " << constants::gRatio() << endl; 
-} 
-</code> 
- 
-=== Mε δήλωση μόνο των ονομάτων που θα χρησιμοποιηθούν === 
- 
-Χρησιμοποιούμε την έκφραση ''using namespace_name::var_name'', όπως παρακάτω: 
- 
-<code c++ namespace.cpp> 
-#include <iostream> 
-using namespace std; 
- 
-namespace constants { 
-  const double golderRatio = 1.6180339887; 
-  double gRatio() { return golderRatio; } 
-} 
- 
-using constants::gRatio; 
- 
-int main() { 
-  cout << "Golden Ratio: " << constants::golderRatio << endl; 
-  cout << "Golden Ratio: " << gRatio() << endl; 
-} 
-</code> 
- 
-=== Με δήλωση του namespace από το οποίο θα χρησιμοποιηθούν συγκεκριμένα ονόματα === 
- 
-Χρησιμοποιούμε την έκφραση ''using namespace namespace_name'', όπως παρακάτω: 
-<code c++ namespace.cpp> 
-#include <iostream> 
-using namespace std; 
- 
-namespace constants { 
-  const double golderRatio = 1.6180339887; 
-  double gRatio() { return golderRatio; } 
-} 
- 
-using namespace constants; 
- 
-int main() { 
-  cout << "Golden Ratio: " << golderRatio << endl; 
-  cout << "Golden Ratio: " << gRatio() << endl; 
-} 
-</code> 
- 
-=== Παράδειγμα ορισμού και χρήσης μεταβλητών και μεθόδων με το ίδιο όνομα από δύο διαφορετικά namespaces === 
- 
-Στο παράδειγμα που ακολουθεί ορίζονται δύο //namespaces// τα οποία περιέχουν μία μεταβλητή και μία συνάρτηση με το ίδιο όνομα. Δείτε πως διακρίνουμε τις επιμέρους μεταβλητές με χρήση του ονόματος του αντίστοιχου //namespace// πριν από την χρήση κάθε μεταβλητής ή συνάρτησης. 
- 
-<code c++ nameVisibility.cpp> 
-#include <iostream> 
-using namespace std; 
- 
-namespace euler { 
-  const double var = 2.71828; 
-  double value() { return var; } 
-} 
- 
-namespace pi { 
-  const double var = 3.1416; 
-  double value() { return var; } 
-} 
- 
-int main () { 
-  cout << pi::var << '\n';   
-  cout << pi::value() << '\n'; 
-  cout << euler::var << '\n'; 
-  cout << euler::value() << '\n'; 
-  return 0; 
-} 
-</code> 
  
cpp/namespace.txt · Last modified: 2021/05/06 22:52 (external edit)