EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

C++ namespace

By Savi JaggaSavi Jagga

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » C++ namespace

C++ namespace

Introduction to C++ namespace

Scope in C++ is a mechanism to create groups of like classes, objects, or functions together out of the global scope. Using this mechanism naming the variables has become easier as a variable with the same name can be declared in 2 different namespaces without giving any compile-time error. Hence namespace refers to different blocks that can be created in a program to group all like objects and all variables, functions, or classes inside a block can be referred to using namespace_name:: function_name. This way many functions can have the same name and all can be accessed from anywhere in the program by referring to its namespace name. In this topic, we are going to learn about C++ namespace.

Syntax

The namespace is a declarative region to define various scopes for various functions and variables, thus when one needs to refer to one such function of the variable we can use namespace name.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Syntax:

namespace myFirstNamespace{
//declare all functions and variables
}

Example:

namespace myNamespace{
int var=10;
}

Accessing variable in a specific namespace, a scope resolution ( :: )operator is used.

Syntax:

namespace_name :: variable_name
Namespace_name :: function_name

Example:

myFirstNamespace :: var

How does the namespace works C++?

The namespace is a special feature added in C++ but not present in C. It provides a scope to some variables or functions and organizes them into different logical scopes that can be referred to using their names. The namespace is declared in global scopes and can easily be nested in other namespaces. Thus no access specifiers are needed to specify in the namespace.

When a namespace is declared namespace keyword is declared before that. And then all the functions, variables, or classes declared inside that namespace belongs to that block and can be referred only using the name of that namespace using (:: ) scope resolution operator.

When the compiler encounters a:: operator it sends the control to that namespace block. A namespace can be defined in multiple blocks also.

Popular Course in this category
C++ Training (4 Courses, 5 Projects, 4 Quizzes)4 Online Courses | 5 Hands-on Projects | 37+ Hours | Verifiable Certificate of Completion | Lifetime Access | 4 Quizzes with Solutions
4.5 (5,213 ratings)
Course Price

View Course

Related Courses
Java Training (40 Courses, 29 Projects, 4 Quizzes)C Programming Training (3 Courses, 5 Project)

In case a namespace is unnamed then the variables and functions defined inside them can be accessed directly the same as accessing global variables.

Namespaces can be nested also in other namespaces. To access them we need to use:: operator that number of times.

For eg:

namespace ns1{
namespace ns2{
namespace ns3{
int myvar=10;
}
}
}

To access myvar one need to use ns1::ns2::ns3::myvar.

This way namespaces allow us to make different scopes and reuse the same variable names in our application present in different namespaces. Using namespace helps a lot to manage the files present in different libraries.

Examples of C++ namespace

Here are the following examples mention below

Example #1

In the below example we will see how to define the same function name in two different namespaces first and second. Also, we will see how to define a class in a namespace and access it.

Code:

#include <iostream>
using namespace std;
namespace first
{
int oper(){
return 10;
}
}
namespace second
{
const double i = 100;
double oper() {  return 2*i; }
}
namespace third
{
class example
{
public:
void show()
{
cout << "thrid::example::show()\n";
}
};
}
int main()
{
cout << first::oper()<< '\n';
cout << second::oper() << '\n';
cout << second::i << '\n';
third::example myObj;
myObj.show();
return 0;
}

Output:

C++ namespace output 1

Example #2

In the below example we will see how we can define multiple namespaces with the same name. Thus the variables inside all of them in the same scope. Also, we can see how to define unnamed namespaces.

Code:

#include <iostream>
using namespace std;
namespace myNs
{
int var1=10;
}
namespace myNs
{
int var2=20;
}
namespace {
int i=15;
int myVar(){
return i;
}
}
int main()
{
cout << "Value of Var1 = "<<myNs::var1<< '\n';
cout <<"Value of Var2 = "<< myNs::var2<< '\n';
cout <<"Value returned by unnamed namespacce = "<<myVar()<< '\n';
return 0;
}

Output:

C++ namespace output 2

Example #3

In the below example we will see how nested namespaces can be declared and accessed from outside the namespace. Also how we access a variable in the namespace without:: operator and using “using” directive.

We will also see how we can create an alias for a namespace that helps to directly use it using an alias name.

Code:

#include <iostream>
using namespace std;
namespace first
{
int myvar = 5;
namespace second
{
namespace third
{
int myvar1=myvar;
}
}
}
namespace myalias = first::second::third;
namespace demo
{
int gvar = 300;
}
using namespace demo;
int main()
{
cout << "Value of global variable in demo namespace = "<<gvar << "\n";
cout << "Value of myvar1 in nested namespace third = "<<myalias::myvar1 << "\n";
return 0;
}

Output:

output 3

Advantages

Namespace helps a lot to define various scopes in one program to provide scope to various identifiers declared inside them.

  • Using the same variable names – With the help of declaring namespaces, the same variable names can be reused in a single program.
  • Use libraries:- Namespaces and named spaces helps a lot to use all libraries together and helps distinguish different which variable we are trying access by specifying the name using:: operator.
  • Code Readability- This also enhances the readability of the code by specifying the similar code in different files and different libraries.

Conclusion

Namespace in C+ is referred to as the blocks one case used to group like classes, functions, and variables. It helps to create more than one variable with the same name in different namespaces, each of which can be referred to using scope resolution operator(::).

Recommended Articles

This is a guide to C++ namespace. Here we discuss how does the namespace works C++ along with the advantages and programming examples. You may also have a look at the following articles to learn more –

  1. C++ Bitset
  2. Signal in C++
  3. C++ setprecision
  4. C++ Header Files

C++ Training (4 Courses, 5 Projects, 4 Quizzes)

4 Online Courses

5 Hands-on Projects

37+ Hours

Verifiable Certificate of Completion

Lifetime Access

4 Quizzes with Solutions

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C plus plus Programming Tutorial
  • Advanced
    • C++ namespace
    • Encapsulation in C++
    • Access Modifiers in C++
    • Abstract Class in C++
    • C++ Class and Object
    • What is Template Class in C++?
    • C++ Algorithm
    • Data Structures and Algorithms C++
    • C++ Garbage Collection
    • Virtual Keyword in C++
    • Access Specifiers in C++
    • Storage Class in C++
    • Call by Value in C++
    • Multimap in C++
    • C++ Multiset
    • C++ Lambda Expressions
    • Stack in C++
    • C++ Static
    • C++ static_cast
    • Deque in C++
    • C++ Vector Functions
    • C++ 2D Vector
    • C++ List
    • C++ Mutable
    • Enum in C++
    • Abstraction in C++
    • Signal in C++
    • C++ Queue
    • Priority Queue in C++
    • Regular Expressions in C++
    • C++ Hash Table
    • C++ Expression
    • File Handling in C++
    • C++ Stream
    • ifstream in C++
    • C++ ofstream
    • C++ fstream
    • C++ Read File
    • C++ iomanip
    • Macros in C++
    • Templates in C++
    • C++ setprecision
    • C++ Int to String
    • C++ thread( )
    • C++ Thread Pool
    • C++ thread_local
  • Basic
    • Introduction To C++
    • What is C++
    • Features of C++
    • Applications of C++
    • Best C++ Compiler
    • C++ Data Types
    • C++ Double
    • C++ unsigned int
    • User Defined Data Types in C++
    • Variables in C++
    • C++ Keywords
    • Pointers in C++
    • C++ Void Pointer
    • Function Pointer in C++
    • Iterator in C++
    • C++ Commands
    • Object in C++
    • C++ Literals
    • C++ Reference
    • C++ Undefined Reference
    • String in C++
    • C++ Programming Language (Basics)
    • C++ Identifiers
    • C++ Header Files
    • Type Casting in C++
    • C++ Formatter
  • Operators
    • C++ Operators
    • Arithmetic Operators in C++
    • Assignment Operators in C++
    • Bitwise Operators in C++
    • Relational Operators in C++
    • Boolean Operators in C++
    • Unary Operators in C++
    • C++ Operator[]
    • Operator Precedence in C++
    • C++ operator=()
  • Control Statements
    • Control Statement in C++
    • if else Statement in C++
    • Else If in C++
    • Nested if in C++
    • Continue Statement in C++
    • Break Statement in C++
    • Switch Statement in C++
    • goto Statement in C++
    • C++ Struct
    • Loops in C++
    • Do While Loop in C++
    • Nested Loop in C++
  • Functions
    • C++ getline()
    • C++ String Functions
    • Math Functions in C++
    • Friend Function in C++
    • Recursive Function in C++
    • Virtual Functions in C++
    • strcat() in C++
    • swap() in C++
    • strcmp() in C++
    • ceil function in C++
    • C++ begin()
    • size() in C++
    • C++ test()
    • C++ any()
    • C++ Bitset
    • C++ find()
    • C++?Aggregation
    • C++?String append
    • C++ String Copy
    • C++ end()
    • C++ endl
    • C++ push_back
    • C++ shuffle()
    • malloc() in C++
    • C++ reserve()
    • C++ unique()
    • C++ sort()
    • C++ find_if()
    • Reflection in C++
    • C++ replace()
    • C++ search()
    • C++ Memset
    • C++ size_t
    • C++ Substring
    • C++ Max
    • C++ absolute value
    • C++ memcpy
    • C++ wchar_t
    • C++ free()
    • C++ pair
    • C++ this
    • C++ sizeof()
    • C++ Move Semantics
  • Array
    • Arrays in C++
    • 2D Arrays in C++
    • 3D Arrays in C++
    • Multi-Dimensional Arrays in C++
    • C++ Array Functions
    • String Array in C++
    • C++ Length of Array
    • C++ arraylist
  • Constuctor and Destructor
    • Constructor and Destructor in C++
    • Constructor in C++
    • Destructor in C++
    • Copy Constructor in C++
    • Parameterized Constructor in C++
  • Overloading and overriding
    • Overloading and Overriding in C++
    • Overloading in C++
    • Overriding in C++
    • Function Overloading in C++
    • Function Overriding in C++
    • Method Overloading in C++
  • Inhertiance
    • Types of Inheritance in C++
    • Single Inheritance in C++
    • Multiple Inheritance in C++
    • Hierarchical Inheritance in C++
    • Multilevel Inheritance in C++
    • Hybrid Inheritance in C++
  • Sorting
    • Sorting in C++ 
    • Heap Sort in C++
    • C++ Vector Sort
    • Insertion Sort in C++
    • Selection Sort in C++
    • C++ QuickSort
    • Sort string C++
  • Programs
    • Patterns in C++
    • Star Patterns In c++
    • Swapping in C++
    • Reverse Number in C++
    • Palindrome Program in C++
    • Palindrome in C++
    • Factorial Program in C++
    • Fibonacci Series in C++
    • Square Root in C++
    • Random Number Generator in C++
    • Prime Number in C++
    • Leap Year Program in C++
    • Anagram in C++
    • Armstrong Number in C++
    • Reverse String in C++
    • Socket Programming in C++
    • Matrix Multiplication in C++
    • C++ using vs typedef
    • C++ vector vs list
    • C++ vector vs array
  • Interview question
    • C++ Interview Questions
    • Multithreading Interview Questions C++

Related Courses

C++ Training Course

Java Training Course

C Programming Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C++ Training (4 Courses, 5 Projects, 4 Quizzes) Learn More