Namespace
Namespaces allows us to group named entities that otherwise would have a global scope into narrower scopes, giving them namespace scope. This allows organizing the elements of a program into different logical scopes referred to by names.
• Namespace is a feature added in C++ and not in C.
• A namespace is a declarative region that provides a scope to the identifiers( names of the types, functions, variables etc) inside it.
• Multiple namespace blocks can have variable with same name.
• All the declarations within those blocks are declared in the named scope.
A namespace definition begins with the keyword “namespace” followed by the namespace name as follows:
namespace abc
{
int a=10;
int b=20;
}
namespace xyz
{
int a=100;
int b=200;
}
• Namespace declaration appears only at global scope
• Namespace declaration can be nested within another namespace
• Namespace declarations don’t have access specifiers (public or private)
• No need to give semicolon after the closing brace of definition of namespace.
Example
#include <iostream>
using namespace std;
namespace abc
{
int a=10;
}
namespace xyz
{
int a=100;
}
int main()
{
int a=1000;
cout << "Hello world!" << endl;
cout<<"a = "<<a<<endl; //1000
cout<<"a = "<<abc::a<<endl; //10
cout<<"a = "<<xyz::a<<endl; //100
return 0;
}
/* Output */ ello world! a = 1000 a = 10 a = 100
Nested namespace
namespace abc
{
int a=10;
namespace xyz
{
int a=20;
}
}
Cout<<“a = “<<abc::a<<endl; // 10
Cout<<“a = “<<abc::xyz::a<<endl; // 20
/* Nested namespace */
#include <iostream>
using namespace std;
namespace abc
{
int a=10;
namespace xyz
{
int a=100;
}
}
int main()
{
int a=1000;
cout << "Hello world!" << endl;
cout<<"a = "<<a<<endl; //1000
cout<<"a = "<<abc::a<<endl; //10
cout<<"a = "<<abc::xyz::a<<endl; //100
return 0;
}
/* Output */ Hello world! a = 1000 a = 10 a = 100




