티스토리 뷰

LANGUAGE/C++

[C++] THIS

진심스테이크 2018. 3. 8. 09:50

 

this

- JAVA : 자기 자신을 가리키는 레퍼런스

- C++ : 자기 자신을 가리키는 객체 포인터

- 인스턴스 함수의 첫번째 매개 변수에서 존재 -> 객체를 만들어야함

#static : 객체를 만들지 않아도 됨

#인스턴스 메소드 : 객체를 만들어야만 쓸 수 있는 메소드

-명시적으로 사용할 경우

 -> 필드명과 지역변수가 같으면 무조건 this.을 써준다

 -> 메소드에서 자기 자신을 리턴할때 사용 -> 반복적인 일을 할 때

 

#static 메소드에서 필드 값을 초기화 할 수 없다 -> this를 만들 수 없기 때문

- 쓰고 싶으면 생략 되어있는 것을 코딩 

 


 

call by adress

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;

class A {
    int a;
public :
    A() {
        a = 100;
    }
    static void disp(A *p) { //call by adress
        cout << "static method" << endl;
        cout << p->a << endl;
    }
};

void main() {
    //A::disp(); //static method 호출
    //A클래스 함수의 disp()

    A aa; //선언만 한것
    aa.disp(&aa); //메소드를 부를 때 자기 자신의 주소가 넘어감
}

 

call by reference -> 잘 쓰지 않음

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;

class A {
    int a;
public :
    A() {
        a = 100;
    }
    static void disp(A &p) { //call by reference
        cout << "static method" << endl;
        cout << p.a << endl;
    }
};

void main() {
    //A::disp(); //static method 호출
    //A클래스 함수의 disp()

    A aa; //선언만 한것
    aa.disp(aa); //메소드를 부를 때 자기 자신의 주소가 넘어감
}

 

'LANGUAGE > C++' 카테고리의 다른 글

[C++] CONST  (0) 2018.03.08
[C++] STATIC  (0) 2018.03.08
[C++] CLASS  (0) 2018.03.07
[C++] OVERROADING  (0) 2018.03.06
[C++] POINTER ARRAY - 포인터 배열  (1) 2018.03.06
댓글