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 Created

тЖУ

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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Student *ptr;

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ ptr Class Student рдХрд╛ Object Pointer рд╣реИред


Initialization of Object Pointer

Object Pointer рдХреЛ рдХрд┐рд╕реА Existing Object рдЕрдерд╡рд╛ Dynamic Object рдХреЗ Address рд╕реЗ Initialize рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

Student s; Student *ptr = &s;

рдпрд╣рд╛рдБ Pointer ptr, Object s рдХрд╛ Memory Address Store рдХрд░рддрд╛ рд╣реИред


Accessing Object Members using -> Operator

рдпрджрд┐ Object Pointer рдЙрдкрд▓рдмреНрдз рд╣реЛ, рддреЛ Object рдХреЗ Data Members рддрдерд╛ Member Functions рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -> Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

ptr->marks = 90; ptr->display();

-> Operator Pointer рдХреЛ Dereference рдХрд░рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд Object рдХреЗ Member рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИред


Accessing Object Members using (*Pointer).Member

Object Pointer рджреНрд╡рд╛рд░рд╛ Members рдХреЛ Access рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ Pointer рдХреЛ рдкрд╣рд▓реЗ Dereference рдХрд░рдирд╛ рддрдерд╛ рдлрд┐рд░ . Operator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

(*ptr).marks = 90; (*ptr).display();

рджреЛрдиреЛрдВ Methods рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди Practical Programming рдореЗрдВ -> Operator рдЕрдзрд┐рдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдПрд╡рдВ Readable рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред


Object Pointer with Constructors

Object Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ Constructor рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Dynamically Object Create рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ Object Heap Memory рдореЗрдВ Create рд╣реЛрддрд╛ рд╣реИред

Student *ptr = new Student();

рдпрд╣ Statement Runtime рдкрд░ рдирдпрд╛ Object Create рдХрд░рддрд╛ рд╣реИ рддрдерд╛ рдЙрд╕рдХрд╛ Address Pointer рдореЗрдВ Store рдХрд░рддрд╛ рд╣реИред


Array of Object Pointers

рдпрджрд┐ рдХрдИ Objects рдХреЗ Addresses Store рдХрд░рдиреЗ рд╣реЛрдВ, рддреЛ Object Pointer рдХрд╛ Array рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ Technique Large Applications рддрдерд╛ Dynamic Collections рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред

Student *students[5];

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╛рдБрдЪ 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 рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Student *ptr; ptr = new Student;

Dynamic Object рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ Memory рдХреЛ delete Operator рджреНрд╡рд╛рд░рд╛ Release рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред


Deleting Dynamic Objects using delete

рдпрджрд┐ Dynamic Object рдХреЛ Delete рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛, рддреЛ Heap Memory Occupied рд░рд╣рддреА рд╣реИ рдФрд░ Program рдореЗрдВ Memory Leak рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

delete ptr; ptr = NULL;

Memory Release рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж Pointer рдХреЛ NULL рдЕрдерд╡рд╛ nullptr рдкрд░ Set рдХрд░рдирд╛ рдЕрдЪреНрдЫреА Programming Practice рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред


Passing Objects through Pointers

рдХрдИ рдмрд╛рд░ рдмрдбрд╝реЗ Objects рдХреЛ Copy рдХрд░рдиреЗ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЙрдирдХреЗ Pointer рдХреЛ Function рдореЗрдВ Pass рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Memory рдХреА рдмрдЪрдд рд╣реЛрддреА рд╣реИ рддрдерд╛ Program рдХреА Performance рдмреЗрд╣рддрд░ рд╣реЛрддреА рд╣реИред

void display(Student *ptr) { ptr->show(); }

рдЗрд╕ рдкреНрд░рдХрд╛рд░ Function рд╕реАрдзреЗ Original Object рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред


Returning Objects using Pointers

Function рдХрд┐рд╕реА Object Pointer рдХреЛ Return рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ Technique Factory Methods рддрдерд╛ Dynamic Object Creation рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред

Student* createObject() { Student *obj = new Student; return obj; }

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

#include<iostream> using namespace std; class Student { public: int marks; }; int main() { Student s; Student *ptr = &s; ptr->marks = 90; cout << "Marks = " << ptr->marks; return 0; }

рдЗрд╕ Program рдореЗрдВ ptr, Object s рдХрд╛ Memory Address Store рдХрд░рддрд╛ рд╣реИред -> Operator рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Object рдХреЗ Data Member рдХреЛ Access рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


Program using Dynamic Object

#include<iostream> using namespace std; class Student { public: int marks; }; int main() { Student *ptr = new Student; ptr->marks = 95; cout << "Marks = " << ptr->marks; delete ptr; return 0; }

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ new Operator рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Object Runtime рдкрд░ Create рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Object рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж delete Operator рджреНрд╡рд╛рд░рд╛ Memory Release рдХреА рдЧрдИ рд╣реИред


Program using (*Pointer).Member Syntax

#include<iostream> using namespace std; class Student { public: int marks; }; int main() { Student s; Student *ptr = &s; (*ptr).marks = 88; cout << "Marks = " << (*ptr).marks; return 0; }

рдпрд╣ Program рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ Object Pointer рджреНрд╡рд╛рд░рд╛ Members рдХреЛ (*Pointer).Member Syntax рд╕реЗ рднреА Access рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ Practical Programming рдореЗрдВ -> Operator рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред


Program to Pass Object Pointer to Function

#include<iostream> using namespace std; class Student { public: int marks; }; void display(Student *ptr) { cout << ptr->marks; } int main() { Student s; s.marks = 80; display(&s); return 0; }

рдЗрд╕ 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

  1. What is an Object Pointer in C++?
  2. Why are Object Pointers used?
  3. How do you declare an Object Pointer?
  4. What is the use of the -> Operator?
  5. Differentiate between . and -> Operators.
  6. How do you create Dynamic Objects?
  7. Why is the delete Operator used?
  8. What is the difference between an Object and an Object Pointer?
  9. How are Objects passed through Pointers?
  10. Give any two applications of Object Pointers.

Exam Oriented Important Questions

  1. Define Object Pointer with suitable example.
  2. Explain the declaration and initialization of Object Pointer.
  3. Write a C++ Program using Object Pointer.
  4. Differentiate between Object and Object Pointer.
  5. Differentiate between . Operator and -> Operator.
  6. Explain Dynamic Object Allocation using new.
  7. Explain the use of delete with Dynamic Objects.
  8. Write short notes on Passing Objects through Pointers.
  9. Discuss the advantages and disadvantages of Object Pointers.
  10. 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 тЖТ