this Pointer in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
this Pointer in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
this Pointer in C++
this Pointer C++ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ (Special) Pointer рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ Non-Static Member Function рдХреЗ рдЕрдВрджрд░ Automatically рдЙрдкрд▓рдмреНрдз рд░рд╣рддрд╛ рд╣реИред рдпрд╣ Pointer рд╡рд░реНрддрдорд╛рди (Current) Object рдХрд╛ Memory Address Store рдХрд░рддрд╛ рд╣реИред рдЬрдм рднреА рдХрд┐рд╕реА Object рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Member Function Call рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм Compiler рдЙрд╕ Object рдХрд╛ Address Hidden Argument рдХреЗ рд░реВрдк рдореЗрдВ this Pointer рдореЗрдВ рднреЗрдЬ рджреЗрддрд╛ рд╣реИред
Object Oriented Programming рдореЗрдВ this Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ Current Object рдХреЛ Refer рдХрд░рдиреЗ, Method Chaining рдХрд░рдиреЗ, Constructor рдореЗрдВ Data Members рдФрд░ Parameters рдХреЗ Name Conflict рдХреЛ рджреВрд░ рдХрд░рдиреЗ рддрдерд╛ Current Object Return рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред RGPV B.Tech First Year рдХреА рдкрд░реАрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЗрд╕ Topic рд╕реЗ Theory рддрдерд╛ Program рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╢реНрди рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВред
тЖУ
Member Function Called
тЖУ
Compiler Passes this Pointer
тЖУ
Current Object Accessed
Introduction to this Pointer
рдЬрдм рдХрд┐рд╕реА Class рдХрд╛ Object Member Function рдХреЛ Call рдХрд░рддрд╛ рд╣реИ, рддрдм Compiler рдЙрд╕ Object рдХрд╛ Address рд╕реНрд╡рддрдГ Member Function рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред рдпрд╣реА Address this Pointer рдХрд╣рд▓рд╛рддрд╛ рд╣реИред
Programmer рдХреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдЗрд╕ Pointer рдХреЛ Declare рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ Compiler рджреНрд╡рд╛рд░рд╛ Automatically рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
What is this Pointer?
this Pointer рдПрдХ Implicit Pointer рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╡рд░реНрддрдорд╛рди Object (Current Object) рдХреА рдУрд░ Point рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ Type рд╕рдВрдмрдВрдзрд┐рдд Class рдХрд╛ Pointer рд╣реЛрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ Class рдХрд╛ рдирд╛рдо Student рд╣реИ рддреЛ Member Function рдХреЗ рдЕрдВрджрд░ this рдХрд╛ Type Student* рд╣реЛрдЧрд╛ред
Need of this Pointer
- Current Object рдХреЛ Refer рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Constructor рдореЗрдВ Parameter рдФрд░ Data Member рдХреЗ рд╕рдорд╛рди рдирд╛рдо рд╣реЛрдиреЗ рдкрд░ рдЕрдВрддрд░ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Method Chaining Implement рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Current Object Return рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Object рдХрд╛ Address рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
- Complex Object Oriented Programs рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- Readable рдПрд╡рдВ Maintainable Code рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
Characteristics of this Pointer
- рдпрд╣ Compiler рджреНрд╡рд╛рд░рд╛ Automatically рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдпрд╣ рдХреЗрд╡рд▓ Non-Static Member Functions рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИред
- рдпрд╣ рд╣рдореЗрд╢рд╛ Current Object рдХреА рдУрд░ Point рдХрд░рддрд╛ рд╣реИред
- Static Member Function рдореЗрдВ this Pointer рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрддрд╛ред
- рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Object рдХреЗ Members рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- Method Chaining рдореЗрдВ рдЗрд╕рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Syntax of this Pointer
Current Object рдХреЗ Members рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП this Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ Member Function рдХреЗ Parameter рдФрд░ Data Member рдХрд╛ рдирд╛рдо рд╕рдорд╛рди рд╣реЛ, рддреЛ Data Member рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП this-> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Working of this Pointer
рдЬрдм рдХрд┐рд╕реА Object рджреНрд╡рд╛рд░рд╛ Member Function Call рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрдм Compiler рдЙрд╕ Object рдХрд╛ Address Hidden Argument рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред Member Function рдЙрд╕реА Address рдХреЛ this Pointer рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдпрджреНрдпрдкрд┐ Programmer рд╕реАрдзреЗ рдРрд╕рд╛ Code рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛, рд▓реЗрдХрд┐рди Compiler рдЗрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
Memory Representation of this Pointer
| Object | Memory Address | this Pointer |
|---|---|---|
| Student s1 | 1000 | Points to 1000 |
| Student s2 | 2000 | Points to 2000 |
рдкреНрд░рддреНрдпреЗрдХ Object рдХреЗ рд▓рд┐рдП this Pointer рдЕрд▓рдЧ-рдЕрд▓рдЧ Memory Address рдХреЛ Refer рдХрд░рддрд╛ рд╣реИред
Accessing Data Members using this Pointer
рдпрджрд┐ Constructor рдЕрдерд╡рд╛ Member Function рдХреЗ Parameter рдФрд░ Data Member рдХрд╛ рдирд╛рдо рд╕рдорд╛рди рд╣реЛ, рддреЛ Data Member рдХреЛ Refer рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП this-> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╣рд▓рд╛ marks Object рдХрд╛ Data Member рд╣реИ рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ marks Function Parameter рд╣реИред this-> рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ Compiler рд╕рд╣реА Data Member рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИред
Returning Current Object using return *this
рдХрдИ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ Member Function рд╡рд░реНрддрдорд╛рди Object (Current Object) рдХреЛ Return рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП return *this рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ Object рдХреА Copy рдЕрдерд╡рд╛ Reference Return рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рддрдерд╛ Method Chaining рдХреА рдЖрдзрд╛рд░рд╢рд┐рд▓рд╛ рднреА рд╣реИред
рдпрд╣рд╛рдБ *this рд╡рд░реНрддрдорд╛рди Object рдХреЛ Represent рдХрд░рддрд╛ рд╣реИ рдФрд░ Function рдЙрд╕реА Object рдХреЛ Return рдХрд░рддрд╛ рд╣реИред
Method Chaining using this Pointer
Method Chaining рдРрд╕реА рддрдХрдиреАрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ Member Function рдХреЗ рдмрд╛рдж рджреВрд╕рд░рд╛ Member Function рд▓рдЧрд╛рддрд╛рд░ Call рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ Function рд╡рд░реНрддрдорд╛рди Object рдХрд╛ Reference Return рдХрд░рддрд╛ рд╣реИред
рдЕрдм Program рдореЗрдВ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ Function Call рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ Technique рд╕реЗ Code рдЕрдзрд┐рдХ Readable, Compact рддрдерд╛ Professional рдмрди рдЬрд╛рддрд╛ рд╣реИред
Passing Current Object
рдХрднреА-рдХрднреА рд╡рд░реНрддрдорд╛рди Object рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп Function рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ this Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╡рд░реНрддрдорд╛рди Object рдХрд╛ Address рджреВрд╕рд░реЗ Function рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред
Difference between Normal Pointer and this Pointer
| Normal Pointer | this Pointer |
|---|---|
| Programmer рджреНрд╡рд╛рд░рд╛ Declare рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред | Compiler рджреНрд╡рд╛рд░рд╛ Automatically рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред |
| рдХрд┐рд╕реА рднреА Variable рдпрд╛ Object рдХрд╛ Address Store рдХрд░ рд╕рдХрддрд╛ рд╣реИред | рд╣рдореЗрд╢рд╛ Current Object рдХрд╛ Address Store рдХрд░рддрд╛ рд╣реИред |
| рдХрд┐рд╕реА рднреА Scope рдореЗрдВ Declare рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред | рдХреЗрд╡рд▓ Non-Static Member Function рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИред |
| Pointer Variable рдХрд╛ рдирд╛рдо Programmer рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред | рдЗрд╕рдХрд╛ рдирд╛рдо рд╕рджреИрд╡ this рд╣реЛрддрд╛ рд╣реИред |
| Initialization рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреА рд╣реИред | Compiler рд╕реНрд╡рдпрдВ Initialize рдХрд░рддрд╛ рд╣реИред |
Advantages of this Pointer
- Current Object рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ Refer рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- Constructor рдореЗрдВ Name Conflict рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- Method Chaining рдХреЛ Implement рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- Current Object Return рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- Code рдЕрдзрд┐рдХ Clean рддрдерд╛ Readable рдмрдирддрд╛ рд╣реИред
- Object Oriented Programming рдХреЛ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдмрдирд╛рддрд╛ рд╣реИред
Disadvantages of this Pointer
- Static Member Function рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред
- Beginners рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ Internal Working рд╕рдордЭрдирд╛ рдереЛрдбрд╝рд╛ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧ рд╕реЗ Code рдХреА Readability рдХрдо рд╣реЛ рд╕рдХрддреА рд╣реИред
- рдЧрд▓рдд Reference Return рдХрд░рдиреЗ рдкрд░ Logical Errors рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
Best Practices
- рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рд╣реА this Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- Constructor рдореЗрдВ Name Conflict рд╣реЛрдиреЗ рдкрд░ this-> рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред
- Method Chaining рдХреЗ рд▓рд┐рдП Object Reference Return рдХрд░реЗрдВред
- Static Member Function рдореЗрдВ this Pointer рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред
- Readable рддрдерд╛ Maintainable Code рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
Program using this Pointer
рдЗрд╕ Program рдореЗрдВ Function Parameter рдФрд░ Data Member рджреЛрдиреЛрдВ рдХрд╛ рдирд╛рдо marks рд╣реИред рдЗрд╕рд▓рд┐рдП Data Member рдХреЛ Access рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП this-> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
Program using return *this
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ return *this рд╡рд░реНрддрдорд╛рди Object рдХрд╛ Reference Return рдХрд░рддрд╛ рд╣реИред рдпрд╣реА Concept Method Chaining рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Program using Method Chaining
рдЗрд╕ Program рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ Function рд╡рд░реНрддрдорд╛рди Object рдХрд╛ Reference Return рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ Member Functions рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ Call рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Program Passing Current Object using this Pointer
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╡рд░реНрддрдорд╛рди Object рдХрд╛ Address this Pointer рджреНрд╡рд╛рд░рд╛ рджреВрд╕рд░реЗ Function рдореЗрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред
Real Life Applications of this Pointer
| Application | Description |
|---|---|
| Student Management System | Current Student Object рдХреЛ Update рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
| Banking Software | Current Account Object рдХреА рдЬрд╛рдирдХрд╛рд░реА Modify рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
| Inventory System | Current Product Object рдкрд░ Operations рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
| GUI Applications | Current Window рдЕрдерд╡рд╛ Component рдХреЛ Refer рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред |
| Method Chaining APIs | Fluent Interface Design рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред |
| Large OOP Projects | Current Object Management рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред |
Viva Questions
- What is this Pointer in C++?
- Why is this Pointer called a Special Pointer?
- Where can this Pointer be used?
- Can this Pointer be used inside a Static Member Function? Why?
- Explain the use of this-> in Constructors.
- What is the purpose of return *this?
- Explain Method Chaining using this Pointer.
- How does the Compiler pass the this Pointer?
- Differentiate between Normal Pointer and this Pointer.
- Write one practical application of this Pointer.
Exam Oriented Important Questions
- Define this Pointer with suitable example.
- Explain the need and characteristics of this Pointer.
- Write a C++ Program using this Pointer.
- Explain return *this with example.
- Explain Method Chaining using this Pointer.
- Differentiate between Normal Pointer and this Pointer.
- Explain why this Pointer is not available in Static Member Functions.
- Write short notes on Passing Current Object using this Pointer.
- Discuss the advantages and disadvantages of this Pointer.
- Explain the real-life applications of this Pointer.
Conclusion
this Pointer C++ рдХрд╛ рдПрдХ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг Feature рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ Non-Static Member Function рдХреЗ рднреАрддрд░ рд╡рд░реНрддрдорд╛рди Object рдХрд╛ Address рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Current Object рдХреЛ Refer рдХрд░рдиреЗ, Constructor рдореЗрдВ Name Conflict рджреВрд░ рдХрд░рдиреЗ, return *this рджреНрд╡рд╛рд░рд╛ Object Return рдХрд░рдиреЗ рддрдерд╛ Method Chaining Implement рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдбрд╝реЗ Object Oriented Software Development рдореЗрдВ рдпрд╣ Code рдХреЛ рдЕрдзрд┐рдХ Structured, Readable рдПрд╡рдВ Efficient рдмрдирд╛рддрд╛ рд╣реИред 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 тЖТPointers to Objects in C++ Notes | Basic Computer Engineering | RGPV BTech First Year
Pointer...
Read More тЖТ