this와 *this
class Simple
{
public:
Simple& operator=(const Simple& rhs)
{
if (this == &rhs)
return *this;
}
private:
int mNum = 1;
int mNum2 = 2;
int mNum3 = 3;
int mNum4 = 4;
int mNum5 = 5;
};
int num = 3;
int* ptr = #
cout << *ptr << endl;
int arr[10] = { 0 };
int* arrptr = arr;
cout << *arrptr << endl;
struct myStruct my;
struct myStruct* strptr = &my;
cout << *strptr << endl;
답변 1
1
1)
int number = 3;
int* ptr = &number;
라면 ptr은 int* 포인터 (주소 + int타입)이기 때문에
*ptr을 하면 역참조를 해서 실제로 3이라는 값을 의미합니다.
마찬가지로,
Simple a;
Simple* ptr = &a;
라면 ptr은 Simple* 포인터 (주소 + Simple 타입)이기 때문에
*ptr을 하면 역참조를 해서 실제로 Simple 이라는 구조체 값을 의미합니다.
딱 1개의 시작값이 아니라, Simple을 구성하는 int 5개가 모두 포함되는 풀박스 그 자체가 되는 것이죠.
마찬가지로 this는 Simple* 이기 때문에 그냥 주소값이고
*this를 하면 Simple 타입입니다.
오해하신 것처럼 [데이터멤버 첫번째 값 or 시작주소]가 아니며
[모든 데이터 멤버를 합친 Simple이라는 타입] 그 자체입니다.
Simple a;
Simple& b = a; // 참조
Simple c = a; // 복사
위는 사용법은 간단하죠? 사실 이거와 동일합니다.
Simple a; 대신 *this라고 생각하시면 됩니다.
Simple& b = *this;를 하면 복사가 되진 않고 참조를 하게 될 것이고
Simple b = *this;를 하면 실제 값을 복사하게 되겠죠.
2)
ostream operator<<에 대해 overloading이 필요한데 그건 일단 넘어가시기 바랍니다.
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
559
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
453
1
strcpy() 구현 관련 질문
0
534
1
빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?
0
475
1
클래스 타입의 포인터 질문합니다
0
559
1
입력값을 enum 값에 넣어주는거 이제 막혔나요?
0
503
1
템플릿 특수화 관련 질문
0
389
1
포인터 관련 질문합니다!
0
270
1
Unable to start assembler. Check your settings.
0
848
2
cpu선택
0
548
1
포인터 질문이 있습니다
0
331
1
20:35 에서 구조체 크기에 대한 질문입니다!
0
589
1
iterator 삭제관련
0
415
1
함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!
0
316
1
15 분 45초 대 질문
0
317
0
스택 프레임 질문합니다!
2
312
1
오른값 참조 in 게임
0
391
0
동적할당 질문이 있습니다
0
457
1
안녕하세요 메모리에 대해 질문드립니다.
0
312
1
함수객체 의 매개변수
0
365
1
복사생성자
0
439
1
main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요
0
430
1
포인터 실습 강의를 보고 궁금한게 있습니다.
0
359
1
스택 오버플로우
2
801
1





