본 문서에는 개념적인 내용만 포함되어 있습니다. 코드 예시는 다른 문서를 참고해주셩

소개 함 해봐라

  • std::optional 은 이름 그대로 “선택적인 값” 을 위한 class 이다.
    • 즉, 해당 값이 존재할 수도 있고 아닐 수도 있을 때를 위한 자료구조인 것.
    • 마치 하이머딩거의 고양이 와 비슷한 셈이다.

왜 필요하지?

  • 특히 어떤 것을 “찾는” 상황을 생각해 보면, 값이 존재할 수도 존재하지 않을 수도 있는 상황은 꽤 흔하다는 것을 알 수 있다.
    • 근데 이때 존재하지 않을 때 어떻게 그것을 표현할까에서 출발한 자료구조이다.
  • 존재하지 않는 경우에 대해 default object (뭐 가령 std::string 의 경우에는 "" 라던지) 를 사용할 수도 있지만, 이렇게 하면 쿨피스 맞을 수도 있다.
    • 왜냐면 그 찾는 값을 못찾은 상황이 아닌 “Default object” 로서 존재할 수도 있는 것이고,
    • 그 default object 가 뭐냐에 따라 불필요한 메모리를 먹을 수도 있다.
  • 그래가 이런 고양이를 한 마리 제공해 주면 참 편하겠다 그죠?