일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- python
- 코딩봉사
- 데이터베이스
- 스프링
- java
- 코틀린
- SW봉사
- 정보처리산업기사
- 자바
- 백준 알고리즘
- programmers
- 시나공
- 공부일지
- kotlin
- 1과목
- 알고리즘
- MYSQL
- BFS
- 회고
- CJ UNIT
- 백준알고리즘
- 백준
- 프로그래머스
- C++
- 문제풀이
- 파이썬
- softeer
- 코딩교육봉사
- SQL
- 소프티어
Archives
- Today
- Total
JIE0025
[ C++ ] this 포인터 본문
728x90
멤버 함수 내에서 사용 가능한 this 라는 이름의 포인터를 사용할 수 있다.
객체 자신을 가리키는 용도이다.
예제
#include <iostream>
using namespace std;
class SimpleClass {
private:
int num;
public:
SimpleClass(int n) : num(n)
{
cout << "num " << num << endl;
cout << "address= " << this << endl;
}
void ShowData() {
cout << num << endl;
}
SimpleClass* GetThisPointer() {
return this;
}
};
int main() {
SimpleClass s1(100);
SimpleClass* ptr1 = s1.GetThisPointer();
cout << ptr1 << endl;
ptr1->ShowData();
return 0;
}
- SimpleClass 라는 클래스를 하나 만들었고
- private한 멤버로 num을 만들었다.
- public한 멤버에 생성자에서 이니셜라이저를 이용해 멤버변수 num을 초기화하고, num을 출력, 주소값을 출력했다.
- this를 반환하는 함수는 GetThisPointer인데, 반환형이 포인터이기 때문에 SimpleClass* 로 되어있다.
<메인 함수>
- SimpleClass의 객체 s1을 하나 만들었고 100을 인자값으로 전달했다.
- SimpleClass 의 주소를 담은 변수 ptr1을 만들었고, s1.GetThisPointer를 통하여 s1의 this를 반환받는다.
- ptr1을 출력해보면 s1의 this값이 나온다.
- ptr -> ShowData() >>> 포인터는 화살표를 이용해 데이터에 접근할 수 있다.
(추가)
클래스나 구조체에서 변수를 사용할 때
. 이랑 -> 로 접근하는데
. : 참조로 요소를 선택함 (점 앞에 저장하려는 데이터가 있을 때)
-> : 포인터로 요소를 선택함 (화살표 앞에 포인터가 있을 경우에 )
this 는 포인터이므로
class 멤버 함수에서 this -> num = 200; 이런식으로 접근 가능하다!
#include <iostream>
using namespace std;
class SimpleClass {
private:
int num;
int num2;
public:
SimpleClass(int n, int m) {
this->num = n;
this->num2 = m;
}
};
int main() {
SimpleClass s2(100,200);
s2.ShowData();
return 0;
}
'기타 학습 > Language' 카테고리의 다른 글
[ C++ ] 동적 할당 깊이 파기 (구조 이해) (0) | 2022.05.18 |
---|---|
[ c++ ] cmath 라이브러리 (0) | 2022.05.17 |
[ C++ ] 객체 배열, 객체 포인터 배열 (0) | 2022.05.17 |
[ C++ ] 이니셜라이저를 이용한 멤버 초기화 (0) | 2022.05.17 |
[C++] 생성자와 소멸자, 복사생성자 (0) | 2022.05.17 |