Welcome to Home.

Sunday, November 16, 2014

Namespaces in C++

Namespaces allow to group entities like classes, objects and functions under a name. This way the global scope can be divided in "sub-scopes", each one with its own name.

The format of namespaces is:
namespace identifier {
entities
}
Where identifier is any valid identifier and entities is the set of classes, objects and functions that are included within the namespace.

For example:
namespace myNamespace
{
int a, b;
}

In this case, the variables a and b are normal variables declared within a namespace called myNamespace. In order to access these variables from outside the myNamespace namespace we have to use the scope operator ::.

For example, to access the previous variables from outside myNamespace we can write:
myNamespace::a
myNamespace::b
The functionality of namespaces is especially useful in the case that there is a possibility that a global object or function uses the same identifier as another one, causing redefinition errors. For example:

// namespaces #include iostream
using namespace std;
namespace first
{
int var = 5;
}
namespace second
{
double var = 3.1416;
}
int main ()
{
cout << first::var << endl;
cout << second::var << endl;
return 0;
}

In this case, there are two global variables with the same name: var. One is defined within the namespace first and the other one in second. No redefinition errors happen thanks to namespaces.

No comments:

Post a Comment