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 рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреА рдЧрдИ рд╣реИред
тЖУ
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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ First рдирд╛рдо рдХрд╛ Namespace рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ Variable рддрдерд╛ Function рджреЛрдиреЛрдВ рдореМрдЬреВрдж рд╣реИрдВред
Creating a Namespace
Programmer рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ Namespaces рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ Namespace рдХрд╛ рдЕрдкрдирд╛ рдЕрд▓рдЧ Scope рд╣реЛрддрд╛ рд╣реИред
Accessing Namespace Members
Namespace рдХреЗ Members рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Scope Resolution Operator (::) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Compiler рдХреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ Namespace рдХреЗ Member рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
using namespace Directive
рдпрджрд┐ рдХрд┐рд╕реА Namespace рдХреЗ рд╕рднреА Members рдХрд╛ рдмрд╛рд░-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛ, рддреЛ using namespace Directive рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ Member рдХреЗ рд╕рд╛рде Namespace Name рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ Namespace std рд╣реИ, рдЬрд┐рд╕рдореЗрдВ C++ Standard Library рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ Functions рддрдерд╛ Objects рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВред
using Declaration
рдпрджрд┐ рдХреЗрд╡рд▓ рдХрд┐рд╕реА рдПрдХ Member рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛ, рддреЛ using Declaration рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкреВрд░рд╛ Namespace Import рдирд╣реАрдВ рд╣реЛрддрд╛ рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ Member рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИред
Scope Resolution Operator (::)
рдпрджрд┐ Program рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рдХреЗ Variables рдпрд╛ Functions рдЕрд▓рдЧ-рдЕрд▓рдЧ Namespaces рдореЗрдВ рд╣реЛрдВ, рддреЛ :: Operator рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рд╕рд╣реА Member рдХреЛ Access рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Nested Namespace
C++ рдореЗрдВ рдПрдХ Namespace рдХреЗ рдЕрдВрджрд░ рджреВрд╕рд░рд╛ Namespace рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ Nested Namespace рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдбрд╝реЗ Projects рдореЗрдВ Code рдХреЛ рд╡рд┐рднрд┐рдиреНрди Modules рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Anonymous Namespace
рдЬрд┐рд╕ Namespace рдХрд╛ рдХреЛрдИ рдирд╛рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рдЙрд╕реЗ Anonymous Namespace рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ Members рдХреЗрд╡рд▓ рдЙрд╕реА Source File рдХреЗ рдЕрдВрджрд░ Accessible рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рд╣рд░ рд╕реЗ Access рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗред
Namespace Alias
рдпрджрд┐ Namespace рдХрд╛ рдирд╛рдо рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ, рддреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ Alias рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ Program рдЕрдзрд┐рдХ Readable рдмрди рдЬрд╛рддрд╛ рд╣реИред
Standard Namespace (std)
C++ рдХреА Standard Library рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ Components std Namespace рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред cout, cin, string, vector, map, sort() рдЖрджрд┐ рд╕рднреА std Namespace рдХрд╛ рднрд╛рдЧ рд╣реИрдВред
std::cin
std::string
std::vector
std::map
Complete Program using Namespace
Program using Multiple Namespaces
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
- What is a Namespace in C++?
- Why is Namespace used?
- Explain Scope Resolution Operator.
- What is using namespace Directive?
- Differentiate between using Directive and using Declaration.
- What is Nested Namespace?
- What is an Anonymous Namespace?
- Explain Namespace Alias.
- What is the std Namespace?
- State the advantages of Namespace.
Exam Oriented Important Questions
- Define Namespace with suitable example.
- Explain the need and features of Namespace.
- Write a C++ Program using Namespace.
- Explain Scope Resolution Operator with example.
- Discuss using Directive and using Declaration.
- Explain Nested Namespace and Anonymous Namespace.
- What is Namespace Alias? Explain with example.
- Explain the Standard Namespace (std).
- Discuss the advantages and limitations of Namespace.
- 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 тЖТ