Namespaces in C++ are used to define a scope and allows us to group global classes, functions and/or objects into one group.
When you use using namespace std;
you are instructing C++ compiler to use the standard C++ library. If you don't give this instruction, then you will have to use std::
, each time you use a standard C++ function/entity.
#include <iostream> using namespace std; class MyClass { public: void sayHello(); }; void MyClass::sayHello() { cout<<"Hello World!\n"; } int main() { MyClass myClass; myClass.sayHello(); return 0; }
If you are not using namespace in the above example, you will have to use std:: everywhere you use cout, like the following.
#include <iostream> class MyClass { public: void sayHello(); }; void MyClass::sayHello() { std::cout<<"Hello World!\n"; } int main() { MyClass myClass; myClass.sayHello(); return 0; }
More about namespaces in C++
Namespaces allow you to group different entities together. You may create your own namespaces for grouping your entities, and access them the same way you did for 'std' namespace.#include <iostream> using namespace std; namespace myAwesomeNamespace { int a=10, b; } namespace myAwesomerNamespace { int a=20, b; } int main() { cout<<"Awesome a = "<<myAwesomeNamespace::a; cout<<"Awesomer a = "<<myAwesomerNamespace::a; return 0; }
You may also use using namespace
with your custom namespces.
#include <iostream> using namespace std; namespace myAwesomeNamespace { int a=10, b; } namespace myAwesomerNamespace { int a=20, b; } int main() { using namespace myAwesomeNamespace; cout<<"Awesome a = "<<a; cout<<"Awesomer a = "<<myAwesomerNamespace::a; return 0; }
Warning: If you use namepaces that have same entities grouped in it, then it will result in ambiguity error.