연산자에 대한 질문이 있어서 올려봅니다
388
17 asked
연산자 오버로딩 #2 강의에서
Position operator++(int)
{
Position ret=*this;
_x++;
_y++;
return ret;
}
이버전과
Position& operator++(int)
{
_x++;
_y++;
return *this;
}
이버전은 실제 차이가 없는게 아닌지 궁금합니다
어차피 return으로 리턴값을 받아올때 자기 자신의 주소값을 받아 오는데 *this 던 Position 의 ret에 복사 주소값을 받아오던 별차이가 없는게 아닌지 궁금합니다
아그리고 코딩하면서 생각해봤는데 윗버전은 좀 문제가 있어 보이는데 사실 이게 맞는게 아닌지 의문이 듭니다
Position operator++(int)
{
Position ret=*this;
_x=ret._x++;
_y=ret._y++;
return ret;
}
이렇게 되야 맞는말이 되는거 아닌지 그래야 말이 되는거 아닌가요?
Answer 4
1
이해 됬습니다 한 30번쯤 돌려보니까 이해 됬네요 ㅋㅋ
지금까지 착각하고 있었던게
int a=0;
a++;
이리하면 a는 1이 되는거여서
만약 a++가
int b = a++;
이런식으로 된다면 지금까지 전 a도 1이고 b도 1인줄 알았는데 이걸 잘못알고 있었네요 ㅠㅠ
여기서 a는 1되고 b는 a가 1증가하기 전값인 0 이 되는거였는데 이부분을 잘못 이해하고 있어서 계속 이해가 되지 않는거였네요 ㅋㅋ 기초가 부족했던거 같았습니다
0
엄연히 다릅니다.
Position operator++(int)
{
Position ret=*this;
_x++;
_y++;
return ret;
}
이 버전에서는 주소값을 복사하는 개념이 아니라,
임시 객체를 만들어서 x, y 값을 복사해서 반환하고,
원본 객체의 _x _y를 각각 뒤늦게 1 증가시킵니다.
임시 객체와 원본 객체는 각각 다른 _x, _y값을 갖고 있게 됩니다.
Position& operator++(int)
{
_x++;
_y++;
return *this;
}
이 버전에서는 원본 객체의 _x, _y를 1 씩 증가시키고
원본 객체를 반환합니다.
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
541
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
441
1
strcpy() 구현 관련 질문
0
513
1
빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?
0
452
1
클래스 타입의 포인터 질문합니다
0
546
1
입력값을 enum 값에 넣어주는거 이제 막혔나요?
0
497
1
템플릿 특수화 관련 질문
0
384
1
포인터 관련 질문합니다!
0
263
1
Unable to start assembler. Check your settings.
0
829
2
cpu선택
0
539
1
포인터 질문이 있습니다
0
322
1
20:35 에서 구조체 크기에 대한 질문입니다!
0
584
1
iterator 삭제관련
0
406
1
함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!
0
310
1
15 분 45초 대 질문
0
308
0
스택 프레임 질문합니다!
2
306
1
오른값 참조 in 게임
0
384
0
동적할당 질문이 있습니다
0
449
1
안녕하세요 메모리에 대해 질문드립니다.
0
304
1
함수객체 의 매개변수
0
358
1
복사생성자
0
434
1
main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요
0
419
1
포인터 실습 강의를 보고 궁금한게 있습니다.
0
353
1
스택 오버플로우
2
790
1

