Pointers to Objects in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
Pointers to Objects in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
Pointers to Objects in C++
Pointers to Objects C++ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг Concept рд╣реИ рдЬрд┐рд╕рдореЗрдВ Pointer Variable рдХрд┐рд╕реА Class рдХреЗ Object рдХрд╛ Memory Address Store рдХрд░рддрд╛ рд╣реИред Object Pointer рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Programmer Objects рдХреЛ Dynamically Create рдХрд░ рд╕рдХрддрд╛ рд╣реИ, Memory рдХрд╛ Efficient рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрдерд╛ рдмрдбрд╝реЗ Applications рдореЗрдВ Objects рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ Manage рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Object Pointer рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Dynamic Memory Allocation, Object Oriented Programming, Inheritance, Polymorphism рддрдерд╛ Runtime Object Management рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RGPV B.Tech рдХреА рдкрд░реАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ Object Pointer рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд Theory рдПрд╡рдВ Program рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢реНрди рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВред
тЖУ
Object Address
тЖУ
Pointer Variable
тЖУ
Access Members
Introduction to Pointers to Objects
рдЬреИрд╕реЗ Pointer рдХрд┐рд╕реА рд╕рд╛рдорд╛рдиреНрдп Variable рдХрд╛ Address Store рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реА рдкреНрд░рдХрд╛рд░ Object Pointer рдХрд┐рд╕реА Class рдХреЗ Object рдХрд╛ Memory Address Store рдХрд░рддрд╛ рд╣реИред Object Pointer рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Object рдХреЗ Data Members рддрдерд╛ Member Functions рдХреЛ Access рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Object Pointer рдмрдбрд╝реЗ Programs рдореЗрдВ Memory Management рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ рддрдерд╛ Runtime рдкрд░ Objects Create рдПрд╡рдВ Destroy рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
What is an Object Pointer?
Object Pointer рд╡рд╣ Pointer Variable рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА Class рдХреЗ Object рдХрд╛ Memory Address Store рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Object рдХреЗ Members рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпрддрдГ -> Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Need of Object Pointers
- Runtime рдкрд░ Objects Create рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Dynamic Memory Allocation рдХреЗ рд▓рд┐рдПред
- Memory рдХрд╛ Efficient рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Large Objects рдХреЛ Efficient рддрд░реАрдХреЗ рд╕реЗ Handle рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Polymorphism рдХреЛ Implement рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Inheritance рдореЗрдВ Base Class Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Dynamic Data Structures рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Reusable рдПрд╡рдВ Scalable Programs рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Declaration of Object Pointer
Object Pointer Declare рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Class Name рдХреЗ рдмрд╛рдж * Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ptr Class Student рдХрд╛ Object Pointer рд╣реИред
Initialization of Object Pointer
Object Pointer рдХреЛ рдХрд┐рд╕реА Existing Object рдЕрдерд╡рд╛ Dynamic Object рдХреЗ Address рд╕реЗ Initialize рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ Pointer ptr, Object s рдХрд╛ Memory Address Store рдХрд░рддрд╛ рд╣реИред
Accessing Object Members using -> Operator
рдпрджрд┐ Object Pointer рдЙрдкрд▓рдмреНрдз рд╣реЛ, рддреЛ Object рдХреЗ Data Members рддрдерд╛ Member Functions рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -> Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
-> Operator Pointer рдХреЛ Dereference рдХрд░рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд Object рдХреЗ Member рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИред
Accessing Object Members using (*Pointer).Member
Object Pointer рджреНрд╡рд╛рд░рд╛ Members рдХреЛ Access рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ Pointer рдХреЛ рдкрд╣рд▓реЗ Dereference рдХрд░рдирд╛ рддрдерд╛ рдлрд┐рд░ . Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рджреЛрдиреЛрдВ Methods рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди Practical Programming рдореЗрдВ -> Operator рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдПрд╡рдВ Readable рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
Object Pointer with Constructors
Object Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ Constructor рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Dynamically Object Create рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ Object Heap Memory рдореЗрдВ Create рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ Statement Runtime рдкрд░ рдирдпрд╛ Object Create рдХрд░рддрд╛ рд╣реИ рддрдерд╛ рдЙрд╕рдХрд╛ Address Pointer рдореЗрдВ Store рдХрд░рддрд╛ рд╣реИред
Array of Object Pointers
рдпрджрд┐ рдХрдИ Objects рдХреЗ Addresses Store рдХрд░рдиреЗ рд╣реЛрдВ, рддреЛ Object Pointer рдХрд╛ Array рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ Technique Large Applications рддрдерд╛ Dynamic Collections рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╛рдБрдЪ Object Pointers рдХрд╛ Array рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ Element рдХрд┐рд╕реА рдЕрд▓рдЧ Object рдХрд╛ Address Store рдХрд░ рд╕рдХрддрд╛ рд╣реИред
Dynamic Object Allocation using new
C++ рдореЗрдВ new Operator рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Runtime рдкрд░ Object Create рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ Objects Heap Memory рдореЗрдВ Allocate рд╣реЛрддреЗ рд╣реИрдВ рддрдерд╛ рдЙрдирдХрд╛ Address Object Pointer рдореЗрдВ Store рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Dynamic Object рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ Memory рдХреЛ delete Operator рджреНрд╡рд╛рд░рд╛ Release рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред
Deleting Dynamic Objects using delete
рдпрджрд┐ Dynamic Object рдХреЛ Delete рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛, рддреЛ Heap Memory Occupied рд░рд╣рддреА рд╣реИ рдФрд░ Program рдореЗрдВ Memory Leak рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
Memory Release рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Pointer рдХреЛ NULL рдЕрдерд╡рд╛ nullptr рдкрд░ Set рдХрд░рдирд╛ рдЕрдЪреНрдЫреА Programming Practice рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред
Passing Objects through Pointers
рдХрдИ рдмрд╛рд░ рдмрдбрд╝реЗ Objects рдХреЛ Copy рдХрд░рдиреЗ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЙрдирдХреЗ Pointer рдХреЛ Function рдореЗрдВ Pass рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Memory рдХреА рдмрдЪрдд рд╣реЛрддреА рд╣реИ рддрдерд╛ Program рдХреА Performance рдмреЗрд╣рддрд░ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ Function рд╕реАрдзреЗ Original Object рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
Returning Objects using Pointers
Function рдХрд┐рд╕реА Object Pointer рдХреЛ Return рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ Technique Factory Methods рддрдерд╛ Dynamic Object Creation рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред
Difference between Object and Object Pointer
| Object | Object Pointer |
|---|---|
| Actual Instance of Class | Stores Address of Object |
| Directly Accesses Members | Uses Pointer to Access Members |
| Uses . Operator | Uses -> Operator |
| Stored in Memory | Stores Memory Address |
| Can be Static or Dynamic | Mainly Used for Dynamic Objects |
Difference between . Operator and -> Operator
| . Operator | -> Operator |
|---|---|
| Used with Object | Used with Object Pointer |
| Direct Member Access | Pointer Member Access |
| No Dereferencing Required | Automatically Dereferences Pointer |
Memory Representation of Object Pointer
| Variable | Address | Description |
|---|---|---|
| Student s | 2000 | Actual Object |
| ptr | 1000 | Stores Address 2000 |
Advantages of Object Pointers
- Dynamic Object Creation рд╕рдВрднрд╡ рд╣реЛрддреА рд╣реИред
- Memory рдХрд╛ Efficient рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
- Large Objects рдХреЛ Efficient рддрд░реАрдХреЗ рд╕реЗ Handle рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- Polymorphism рддрдерд╛ Runtime Binding рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВред
- Inheritance рдХреЗ рд╕рд╛рде Base Class Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- Large Software Projects рдореЗрдВ Object Management рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Disadvantages of Object Pointers
- рдЧрд▓рдд Memory Management рд╕реЗ Memory Leak рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- Dangling Pointer рдХреА рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред
- Pointer Programming Beginners рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╣реЛ рд╕рдХрддреА рд╣реИред
- Invalid Pointer Access рд╕реЗ Runtime Errors рдЖ рд╕рдХрддреЗ рд╣реИрдВред
- delete рдХрд╛ рдЙрдкрдпреЛрдЧ рднреВрд▓рдиреЗ рдкрд░ Heap Memory Occupied рд░рд╣рддреА рд╣реИред
Best Practices
- Dynamic Object рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрд╢рд╛ delete рдХрд░реЗрдВред
- Memory Release рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Pointer рдХреЛ NULL рдпрд╛ nullptr рдкрд░ Set рдХрд░реЗрдВред
- рдЬрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реЛ Modern C++ рдореЗрдВ Smart Pointers рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдЕрдирд╛рд╡рд╢реНрдпрдХ Dynamic Allocation рд╕реЗ рдмрдЪреЗрдВред
- Object Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдХрд░реЗрдВред
Program using Object Pointer
рдЗрд╕ Program рдореЗрдВ ptr, Object s рдХрд╛ Memory Address Store рдХрд░рддрд╛ рд╣реИред -> Operator рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Object рдХреЗ Data Member рдХреЛ Access рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Program using Dynamic Object
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ new Operator рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Object Runtime рдкрд░ Create рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Object рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж delete Operator рджреНрд╡рд╛рд░рд╛ Memory Release рдХреА рдЧрдИ рд╣реИред
Program using (*Pointer).Member Syntax
рдпрд╣ Program рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ Object Pointer рджреНрд╡рд╛рд░рд╛ Members рдХреЛ (*Pointer).Member Syntax рд╕реЗ рднреА Access рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ Practical Programming рдореЗрдВ -> Operator рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
Program to Pass Object Pointer to Function
рдЗрд╕ Program рдореЗрдВ Object рдХрд╛ Address Function рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред Function Object Pointer рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Object рдХреЗ Data Member рдХреЛ Access рдХрд░рддрд╛ рд╣реИред
Real Life Applications of Object Pointers
| Application | Description |
|---|---|
| Student Management System | Student Objects рдХреЛ Runtime рдкрд░ Create рдПрд╡рдВ Manage рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
| Banking Software | Account Objects рдХрд╛ Dynamic Management рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
| Game Development | Game Characters рддрдерд╛ Resources рдХреЛ Dynamically Allocate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
| Database Applications | Records рдПрд╡рдВ Objects рдХрд╛ Efficient Memory Management рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
| Operating Systems | Dynamic Resource рдПрд╡рдВ Process Management рдореЗрдВред |
| GUI Applications | Runtime рдкрд░ Windows, Controls рддрдерд╛ Components Create рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
Viva Questions
- What is an Object Pointer in C++?
- Why are Object Pointers used?
- How do you declare an Object Pointer?
- What is the use of the -> Operator?
- Differentiate between . and -> Operators.
- How do you create Dynamic Objects?
- Why is the delete Operator used?
- What is the difference between an Object and an Object Pointer?
- How are Objects passed through Pointers?
- Give any two applications of Object Pointers.
Exam Oriented Important Questions
- Define Object Pointer with suitable example.
- Explain the declaration and initialization of Object Pointer.
- Write a C++ Program using Object Pointer.
- Differentiate between Object and Object Pointer.
- Differentiate between . Operator and -> Operator.
- Explain Dynamic Object Allocation using new.
- Explain the use of delete with Dynamic Objects.
- Write short notes on Passing Objects through Pointers.
- Discuss the advantages and disadvantages of Object Pointers.
- Explain the real-life applications of Object Pointers.
Conclusion
Pointers to Objects C++ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг Feature рд╣реИ рдЬреЛ Object Oriented Programming рдХреЛ рдЕрдзрд┐рдХ Flexible рддрдерд╛ Efficient рдмрдирд╛рддрд╛ рд╣реИред Object Pointer рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Programmer Runtime рдкрд░ Objects Create рдХрд░ рд╕рдХрддрд╛ рд╣реИ, Memory рдХрд╛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрдерд╛ рдмрдбрд╝реЗ Applications рдореЗрдВ Objects рдХреЛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ Manage рдХрд░ рд╕рдХрддрд╛ рд╣реИред new рддрдерд╛ delete Operators рдХреЗ рд╕рд╛рде Object Pointer рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ Memory Leak рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред RGPV B.Tech First Year рдХреЗ рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ Topic Theory, Practical, Viva рддрдерд╛ University Examination рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
Related Articles
Manipulators in C++ Notes | endl, setw, setprecision, setfill | Basic Computer Engineering | RGPV BTech First Year
0...
Read More тЖТType Conversion in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
Type Co...
Read More тЖТAssignment Operator in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
Assignm...
Read More тЖТCopy Constructor in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
Copy Co...
Read More тЖТthis Pointer in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
this Po...
Read More тЖТ