포인터로사용하던걸 참조로 넘겨줄 때 널체크 하는법?
pointer = nullptr;
void PrintInfoByRef(*pointer); // 이 경우에 cout출력줄에서 에러가 생기는데
void PrintInfoByRef(StatInfo& info)
{
// 그럴경우를 대비해서 여기서 이렇게 레퍼런스의 널체크를 추가해주면 되나요?
// 널체크는 잘 되는데 보통 이렇게 레퍼런스도 체크하는지 확실하지 않아 여쭤봅니다
if (&info == nullptr)
return;
cout << info.hp << endl;
}
답변 3
1
포인터는 그 자체로 (nullptr 이거나 / 주소값을 참조하는) 2가지 형태라는 것을 내포하고
실제로 값이 없다는 의미로 nullptr를 넘기기도 하니
안전빵으로 nullptr 체크를 하는 것이 좋지만,
reference는 저렇게 극단적인 케이스까지는 고려할 필요가 없습니다.
물론 정말 하고 싶다면 위에서 하신대로
&info == nullptr 체크까지 고려할 수는 있겠지만
사실 잘못된 값으로 넘겨준 쪽이 잘못한 것이라고 볼 수 있습니다.
따라서 reference에 대해서 저렇게 널체크를 하는 케이스는 사실상 없다고 보시면 됩니다.
1
포인터와 다르게 reference는 별도의 널체크를 할 필요가 없습니다.
애당초 누군가를 지칭하는 제2의 이름으로 간주할 수 있기 때문에,
대상이 없을 수가 없습니다.
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
541
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
442
1
strcpy() 구현 관련 질문
0
513
1
빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?
0
453
1
클래스 타입의 포인터 질문합니다
0
546
1
입력값을 enum 값에 넣어주는거 이제 막혔나요?
0
498
1
템플릿 특수화 관련 질문
0
385
1
포인터 관련 질문합니다!
0
265
1
Unable to start assembler. Check your settings.
0
831
2
cpu선택
0
539
1
포인터 질문이 있습니다
0
324
1
20:35 에서 구조체 크기에 대한 질문입니다!
0
585
1
iterator 삭제관련
0
406
1
함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!
0
310
1
15 분 45초 대 질문
0
309
0
스택 프레임 질문합니다!
2
306
1
오른값 참조 in 게임
0
384
0
동적할당 질문이 있습니다
0
450
1
안녕하세요 메모리에 대해 질문드립니다.
0
305
1
함수객체 의 매개변수
0
360
1
복사생성자
0
434
1
main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요
0
421
1
포인터 실습 강의를 보고 궁금한게 있습니다.
0
355
1
스택 오버플로우
2
790
1





