Namespaces in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Namespaces in C++ Notes | Basic Computer Engineering | RGPV BTech First Year


Namespaces in C++

Namespace C++ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг Feature рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Program рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо (Same Identifier) рд╡рд╛рд▓реЗ Variables, Functions рддрдерд╛ Classes рдХреЗ рдмреАрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ Name Conflict рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Namespace Code рдХреЛ Logical Groups рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд (Organize) рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдмрдбрд╝реЗ Software Projects рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди Programmers рдПрдХ рд╣реА рдирд╛рдо рдХреЗ Variables рдпрд╛ Functions рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ Compiler Confusion рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП C++ рдореЗрдВ Namespace рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреА рдЧрдИ рд╣реИред

Namespace

тЖУ

Avoid Name Conflict

тЖУ

Better Code Organization

Introduction to Namespace

рдЬрдм Program рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ рддрдм Name Conflict рдХреА рд╕рдорд╕реНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдирд╣реАрдВ рдЖрддреАред рд▓реЗрдХрд┐рди Large Applications рдореЗрдВ рдХрдИ Libraries рддрдерд╛ Multiple Source Files рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ Identifiers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Namespace рдкреНрд░рддреНрдпреЗрдХ Identifier рдХреЛ рдПрдХ рдЕрд▓рдЧ Scope рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ Variables рдпрд╛ Functions рдЕрд▓рдЧ-рдЕрд▓рдЧ Namespaces рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА Conflict рдХреЗ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред


Definition of Namespace

Namespace C++ рдХрд╛ рдПрдХ Declarative Region рд╣реИ рдЬреЛ Variables, Functions, Classes рддрдерд╛ рдЕрдиреНрдп Identifiers рдХреЛ рдПрдХ Unique Scope рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ Name Collision рдпрд╛ Name Conflict рдХреА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред


Need of Namespace

  • Name Conflict рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдПред
  • Large Programs рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Libraries рдХреЛ рдЕрд▓рдЧ Scope рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред
  • Reusable Code рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Multiple Developers рдХреЗ Code рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ Combine рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Readability рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Maintainability рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Modular Programming рдХреЛ Support рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

Features of Namespace

  • Provides Unique Scope.
  • Prevents Name Collision.
  • Supports Modular Programming.
  • Improves Code Organization.
  • Supports Nested Namespace.
  • Allows Namespace Alias.
  • Works with Classes, Functions and Variables.
  • Provides Better Maintainability.

Advantages of Namespace

Advantage Description
Avoids Name Conflict рдПрдХ рд╣реА рдирд╛рдо рдХреЗ Identifiers рдЕрд▓рдЧ-рдЕрд▓рдЧ Namespace рдореЗрдВ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
Better Organization Code рдХреЛ Logical Groups рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Easy Maintenance Large Projects рдХреЛ Manage рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Supports Libraries Different Libraries рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рдХреЗ Members рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рддреЗ рд╣реИрдВред
Reusable Code Reusable Modules рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред

Syntax of Namespace

Namespace Declare рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП namespace Keyword рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

namespace First { int value = 100; void display() { cout<<value; } }

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ First рдирд╛рдо рдХрд╛ Namespace рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ Variable рддрдерд╛ Function рджреЛрдиреЛрдВ рдореМрдЬреВрдж рд╣реИрдВред


Creating a Namespace

Programmer рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ Namespaces рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ Namespace рдХрд╛ рдЕрдкрдирд╛ рдЕрд▓рдЧ Scope рд╣реЛрддрд╛ рд╣реИред

namespace Student { string name="Rahul"; } namespace Teacher { string name="Amit"; }

Accessing Namespace Members

Namespace рдХреЗ Members рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Scope Resolution Operator (::) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Compiler рдХреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ Namespace рдХреЗ Member рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

namespace Student { int roll=101; } int main() { cout<<Student::roll; }

using namespace Directive

рдпрджрд┐ рдХрд┐рд╕реА Namespace рдХреЗ рд╕рднреА Members рдХрд╛ рдмрд╛рд░-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛ, рддреЛ using namespace Directive рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ Member рдХреЗ рд╕рд╛рде Namespace Name рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред

#include<iostream> using namespace std; int main() { cout<<"Hello C++"; return 0; }

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ Namespace std рд╣реИ, рдЬрд┐рд╕рдореЗрдВ C++ Standard Library рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ Functions рддрдерд╛ Objects рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВред


using Declaration

рдпрджрд┐ рдХреЗрд╡рд▓ рдХрд┐рд╕реА рдПрдХ Member рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛ, рддреЛ using Declaration рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкреВрд░рд╛ Namespace Import рдирд╣реАрдВ рд╣реЛрддрд╛ рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ Member рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИред

using std::cout; using std::cin; int main() { cout<<"Welcome"; }

Scope Resolution Operator (::)

рдпрджрд┐ Program рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рдХреЗ Variables рдпрд╛ Functions рдЕрд▓рдЧ-рдЕрд▓рдЧ Namespaces рдореЗрдВ рд╣реЛрдВ, рддреЛ :: Operator рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рд╕рд╣реА Member рдХреЛ Access рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

namespace A { int value=10; } namespace B { int value=20; } int main() { cout<<A::value; cout<<B::value; }

Nested Namespace

C++ рдореЗрдВ рдПрдХ Namespace рдХреЗ рдЕрдВрджрд░ рджреВрд╕рд░рд╛ Namespace рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ Nested Namespace рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдбрд╝реЗ Projects рдореЗрдВ Code рдХреЛ рд╡рд┐рднрд┐рдиреНрди Modules рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

namespace College { namespace Student { int roll=25; } }

Anonymous Namespace

рдЬрд┐рд╕ Namespace рдХрд╛ рдХреЛрдИ рдирд╛рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рдЙрд╕реЗ Anonymous Namespace рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ Members рдХреЗрд╡рд▓ рдЙрд╕реА Source File рдХреЗ рдЕрдВрджрд░ Accessible рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рд╣рд░ рд╕реЗ Access рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗред

namespace { int number=50; }

Namespace Alias

рдпрджрд┐ Namespace рдХрд╛ рдирд╛рдо рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ, рддреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ Alias рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ Program рдЕрдзрд┐рдХ Readable рдмрди рдЬрд╛рддрд╛ рд╣реИред

namespace MP = MyProjectHD; MP::display();

Standard Namespace (std)

C++ рдХреА Standard Library рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ Components std Namespace рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред cout, cin, string, vector, map, sort() рдЖрджрд┐ рд╕рднреА std Namespace рдХрд╛ рднрд╛рдЧ рд╣реИрдВред

std::cout
std::cin
std::string
std::vector
std::map

Complete Program using Namespace

#include<iostream> using namespace std; namespace Student { string name="Rahul"; void display() { cout<<"Name : "<<name; } } int main() { Student::display(); return 0; }

Program using Multiple Namespaces

#include<iostream> using namespace std; namespace First { int value=100; } namespace Second { int value=200; } int main() { cout<<First::value<<endl; cout<<Second::value; return 0; }

Real Life Applications of Namespace

Application Use of Namespace
Large Software Projects Modules рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ Scope рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Library Development Different Libraries рдХреЗ рдмреАрдЪ Name Conflict рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдПред
Game Development Game Engine рдПрд╡рдВ Gameplay Modules рдХреЛ рдЕрд▓рдЧ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
Enterprise Applications Reusable Components рдХреЛ Organize рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Open Source Projects Multiple Contributors рдХреЗ Code рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ Combine рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

Advantages of Namespace

  • Name Conflict рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
  • Large Programs рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ Organize рдХрд░рддрд╛ рд╣реИред
  • Reusable Libraries рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддрд╛ рд╣реИред
  • Code Readability рдмрдврд╝рд╛рддрд╛ рд╣реИред
  • Maintainability рдмреЗрд╣рддрд░ рдмрдирд╛рддрд╛ рд╣реИред
  • Modular Programming рдХреЛ Support рдХрд░рддрд╛ рд╣реИред
  • Multiple Developers рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
  • Standard Library рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдмрдирд╛рддрд╛ рд╣реИред

Limitations of Namespace

  • рдЕрддреНрдпрдзрд┐рдХ Nested Namespaces рд╕реЗ Code Complex рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  • using namespace рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ Name Conflict рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред
  • Large Projects рдореЗрдВ Namespace Design рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  • рдЧрд▓рдд Namespace Import рдХрд░рдиреЗ рдкрд░ Compilation Errors рдЖ рд╕рдХрддреЗ рд╣реИрдВред
  • Beginners рдХреЗ рд▓рд┐рдП Scope Resolution рд╕рдордЭрдирд╛ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

Difference between using Directive and using Declaration

using namespace Directive using Declaration
рдкреВрд░реЗ Namespace рдХреЛ Import рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдХрд┐рд╕реА рдПрдХ Member рдХреЛ Import рдХрд░рддрд╛ рд╣реИред
рд╕рднреА Members рд╕реАрдзреЗ Accessible рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ Selected Member Accessible рд╣реЛрддрд╛ рд╣реИред
Name Conflict рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИред Name Conflict рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛрддреА рд╣реИред

Viva Questions

  1. What is a Namespace in C++?
  2. Why is Namespace used?
  3. Explain Scope Resolution Operator.
  4. What is using namespace Directive?
  5. Differentiate between using Directive and using Declaration.
  6. What is Nested Namespace?
  7. What is an Anonymous Namespace?
  8. Explain Namespace Alias.
  9. What is the std Namespace?
  10. State the advantages of Namespace.

Exam Oriented Important Questions

  1. Define Namespace with suitable example.
  2. Explain the need and features of Namespace.
  3. Write a C++ Program using Namespace.
  4. Explain Scope Resolution Operator with example.
  5. Discuss using Directive and using Declaration.
  6. Explain Nested Namespace and Anonymous Namespace.
  7. What is Namespace Alias? Explain with example.
  8. Explain the Standard Namespace (std).
  9. Discuss the advantages and limitations of Namespace.
  10. Differentiate between using Directive and using Declaration.

Conclusion

Namespace C++ рдХрд╛ рдПрдХ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА Feature рд╣реИ рдЬреЛ Name Conflict рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ, Code рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░рдЦрдиреЗ рддрдерд╛ Large Software Projects рдХреЛ Modular рдмрдирд╛рдиреЗ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред Scope Resolution Operator (::), using namespace, using Declaration, Nested Namespace рддрдерд╛ Namespace Alias рдЬреИрд╕реЗ Concepts рдЖрдзреБрдирд┐рдХ C++ Programming рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП RGPV B.Tech рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП Namespace рдХрд╛ рдЕрдзреНрдпрдпрди рдкрд░реАрдХреНрд╖рд╛, Practical рддрдерд╛ Industry рддреАрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

Related Articles

Arrays in C++ Notes | One Dimensional & Two Dimensional Arrays with Programs | Basic Computer Engineering | RGPV BTech First Year

Arrays ...

Read More тЖТ

Control Statements in C++ Notes | Decision Making & Looping Statements | Basic Computer Engineering | RGPV BTech First Year

Control...

Read More тЖТ

Expressions in C++ Notes | Types of Expressions, Evaluation & Expression Statements | Basic Computer Engineering | RGPV BTech First Year

Express...

Read More тЖТ

Operators in C++ Notes | Arithmetic, Relational, Logical, Assignment, Bitwise Operators | Basic Computer Engineering | RGPV BTech First Year

Operato...

Read More тЖТ

Program Structure in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Program...

Read More тЖТ