Course Content
C++ OOP
C++ OOP
The This Keyword
The this
keyword holds a special significance within the context of object-oriented programming (OOP). It refers to the current object instance. Understanding how this works is crucial for effectively managing object state and accessing member variables and functions.
Understanding the this keyword
When a member function is invoked, it implicitly receives a pointer to the object that invoked it. This pointer is accessible through the this
keyword. The this
keyword allows member functions to access the member variables and member functions of the current object.
Example
#include <iostream> class Example { public: Example* get_address() { return this; } }; int main() { Example obj; std::cout << &obj << std::endl; std::cout << obj.get_address() << std::endl; }
When you use the dot operator (.
) to access member variables or member functions within a class, the this
pointer implicitly points to the object for which the member function is called. This is often valuable in various scenarios and commonly employed to avoid ambiguity in variables names.
Example
#include <iostream> class Example { public: void multiply(int number) { number *= number; } int number; }; int main() { Example obj; obj.number = 2; obj.multiply(5); std::cout << obj.number; }
Note
The value of the attribute hasn't changed because the program doesn't differentiate which number we're referring to, as they share the same names.
Here, we can utilize the this
keyword since it points to the current object as a pointer. To access its attributes, we must use the ->
operator.
main
#include <iostream> class Example { public: void multiply(int number) { this->number *= number; } int number; }; int main() { Example obj; obj.number = 2; obj.multiply(5); std::cout << obj.number; }
Using the this
keyword is a widespread practice across various scenarios. It's often employed, particularly in large classes, to signify that a variable is a member of the classes and not an external parameter or argument.
Thanks for your feedback!