‘this’ pointer in C++
2017-05-26 12:18
155 查看
轉載自 http://www.geeksforgeeks.org/this-pointer-in-c/
The ‘this’ pointer is passed as a hidden argument to all nonstatic member function calls and is available as a local variable within the body of all nonstatic functions. ‘this’ pointer is a constant pointer that holds the memory address of the current object. ‘this’
pointer is not available in static member functions as static member functions can be called without any object (with class name).
For a class X, the type of this pointer is ‘X* const’. Also, if a member function of X is declared as const, then the type of this pointer is ‘const X *const’ (see this
GFact)
Following are the situations where ‘this’ pointer is used:
1) When local variable’s name is same as member’s name
For constructors, initializer list can also be used when parameter name is same as member’s name.
2) To return reference to the calling object
When a reference to a local object is returned, the returned reference can be used to chain function calls on a single object.
‘this’ pointer in C++
The ‘this’ pointer is passed as a hidden argument to all nonstatic member function calls and is available as a local variable within the body of all nonstatic functions. ‘this’ pointer is a constant pointer that holds the memory address of the current object. ‘this’pointer is not available in static member functions as static member functions can be called without any object (with class name).
For a class X, the type of this pointer is ‘X* const’. Also, if a member function of X is declared as const, then the type of this pointer is ‘const X *const’ (see this
GFact)
Following are the situations where ‘this’ pointer is used:
1) When local variable’s name is same as member’s name
#include<iostream> using namespace std; /* local variable is same as a member's name */ class Test { private: int x; public: void setX (int x) { // The 'this' pointer is used to retrieve the object's x // hidden by the local variable 'x' this->x = x; } void print() { cout << "x = " << x << endl; } }; int main() { Test obj; int x = 20; obj.setX(x); obj.print(); return 0; } Output: x = 20
For constructors, initializer list can also be used when parameter name is same as member’s name.
2) To return reference to the calling object
/* Reference to the calling object can be returned */ Test& Test::func () { // Some processing return *this; }
When a reference to a local object is returned, the returned reference can be used to chain function calls on a single object.
#include<iostream> using namespace std; class Test { private: int x; int y; public: Test(int x = 0, int y = 0) { this->x = x; this->y = y; } Test &setX(int a) { x = a; return *this; } Test &setY(int b) { y = b; return *this; } void print() { cout << "x = " << x << " y = " << y << endl; } }; int main() { Test obj1(5, 5); // Chained function calls. All calls modify the same object // as the same object is returned by reference obj1.setX(10).setY(20); obj1.print(); return 0; } Output: x = 10 y = 20
相关文章推荐
- ‘this’ pointer in C++
- The pointer in C++ /CLI
- Implementing a simple smart pointer in c++
- C++ 指针的偏移 The offset of a pointer in C++
- C++ 在window8下使用第三方插件出现 Unable to register this add-in because its DllRegisterServer returns an error
- Virtual method and base-type pointer make polymorphism in C++
- c++中[Error] 'cin' was not declared in this scope 是什么意思
- c++ - fcgio.cpp:50: error: 'EOF' was not declared in this scope - Stack Overflow
- 全局变量和局部变量重复之this.name.toString());Exception in thread "main" java.lang.NullPointerException
- C++ this pointer
- Pointer in C/C++
- 'this' pointer in C++
- The differences between pointer and reference in C++
- c++中EOF was not in this scope 的解决办法
- 关于C++程序运行程序是出现的this application has requested the runtime to terminate it in an unusual way. 异常分析
- Difference between pointer variable and reference variable in C++
- Implementing a simple smart pointer in C++
- The two-dimensional pointer operation in C++
- C++ - "'itoa' was not declared in this scope" 错误
- Where is the 'this' pointer stored in computer memory