다음을 통해 공유


이 포인터

포인터 포인터를 비정적 멤버 함수에만 액세스할 수 있습니다는 클래스, struct, 또는 union 형식입니다.이 대 한 멤버 함수를 호출 하는 개체에 가리킵니다.없는 정적 멤버 함수는 포인터입니다.

this 
this->member-identifier

설명

개체의 포인터가 있는 객체 자체입니다. 결과에 반영 되지 않습니다을 sizeof 문은 개체입니다.개체에 대 한 비정적 멤버 함수를 호출 하면 대신 개체의 주소는 컴파일러에서 숨겨진된 인수로 함수에 전달 됩니다.예를 들어, 다음 함수 호출:

myDate.setMonth( 3 );

이 방법으로 해석 될 수 있습니다.

setMonth( &myDate, 3 );

개체의 주소와 멤버 함수 내에서 사용할 수 있는 포인터입니다.대부분의 사용 암시적입니다.불필요 한 있지만 명시적으로 사용 하도록 법적으로 됩니다 클래스의 멤버를 참조할 때입니다.예를 들면 다음과 같습니다.

void Date::setMonth( int mn )
{
   month = mn;            // These three statements
   this->month = mn;      // are equivalent
   (*this).month = mn;
}

식 *this 멤버 함수에서 현재 개체를 반환 하려면 일반적으로 사용 됩니다.

return *this;

해당 포인터도 하는 데 사용에 대 한 자기 방어.

if (&Object != this) {
// do not execute in cases of self-reference

[!참고]

때문에 포인터는 수정할 수 없는 경우에 사용할 수 없습니다.C + +의 이전 구현에 사용할 수 .

가끔은 포인터를 직접 사용 됩니다-예를 들어, 검색 데이터를 조작 하려면 구조체를 현재 개체의 주소를 반드시.

예제

// this_pointer.cpp
// compile with: /EHsc

#include <iostream>
#include <string.h>

using namespace std;

class Buf 
{
public:
    Buf( char* szBuffer, size_t sizeOfBuffer );
    Buf& operator=( const Buf & );
    void Display() { cout << buffer << endl; }

private:
    char*   buffer;
    size_t  sizeOfBuffer;
};

Buf::Buf( char* szBuffer, size_t sizeOfBuffer )
{
    sizeOfBuffer++; // account for a NULL terminator

    buffer = new char[ sizeOfBuffer ];
    if (buffer)
    {
        strcpy_s( buffer, sizeOfBuffer, szBuffer );
        sizeOfBuffer = sizeOfBuffer;
    }
}

Buf& Buf::operator=( const Buf &otherbuf ) 
{
    if( &otherbuf != this ) 
    {
        if (buffer)
            delete [] buffer;

        sizeOfBuffer =  strlen( otherbuf.buffer ) + 1; 
        buffer = new char[sizeOfBuffer];
        strcpy_s( buffer, sizeOfBuffer, otherbuf.buffer );
    }
    return *this;
}

int main()
{
    Buf myBuf( "my buffer", 10 );
    Buf yourBuf( "your buffer", 12 );

    // Display 'my buffer'
    myBuf.Display();

    // assignment opperator
    myBuf = yourBuf;

    // Display 'your buffer'
    myBuf.Display();
}
  

참고 항목

참조

C + + 키워드

This이 포인터의 형식

이 인수가 일치 하는 및 포인터