this pointer
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
非静态成员函数内部,持有的函数被调用的类对象的指针.
原文:
Inside non-static member function, holds a pointer to the class object from which the function was invoked.
this指针的类型是
cv T* const
T
是类名和cv
是指CV符的函数的指针。例如:原文:
The type of this pointer is
cv T* const
where T
is the class name and cv
refers to the CV符 of the function the pointer is used in. For example:Function signature | Type of this |
---|---|
void T::foo() | T* const this; |
void T::foo() const | const T* const this; |
void T::foo() volatile | volatile T* const this; |
void T::foo() const volatile | const volatile T* const this; |
[编辑] 示例
class T { int x; void foo() { this->x = 5; // this used explicitly x = 6; // same as this->x = 6; } void foo() const { this->x = 7; // Error: *this is constant } void foo ( int x ) { // parameter x shadows the attribute with the same name this->x = x; // unqualified x refers to the parameter, but the attribute is still accessible using the this pointer } T& operator= ( const T& b ) { x = b.x; return *this; // this is often used when a reference to the current object is needed } void bar ( const T& b ) { // two ways to call class operators using this (*this) = b; this->operator= ( b ); } void bar() { // methods can be called even when there's no object // the this pointer can be seen like an additional parameter implicitly passed if ( this == NULL ) return; } }; T* pointer = reinterpret_cast<T*>(123); pointer->bar(); // bar is called with 123 (0x7B) as value for this