optional 값에 접근하기
value_or와 has_value 사용하기
optional 값에 접근하기은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
역참조 연산자
선택적 값을 읽는 가장 빠른 방법은 *opt이지만, 값이 있다고 확신할 때만 사용해야 하며 확인은 수행하지 않습니다.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o = 10;
if (o) std::cout << *o << "\n";
}value() 메서드
opt.value()는 값을 반환하지만 선택적 값이 비어 있으면 예외를 발생시킵니다 std::bad_optional_access. 빈 선택적 값이 실제 오류인 경우에 사용하십시오.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o;
try { std::cout << o.value() << "\n"; }
catch (const std::bad_optional_access&) { std::cout << "empty!\n"; }
}기본값을 위한 value_or
opt.value_or(fallback)은 값이 있으면 포함된 값을 반환하고, 그렇지 않으면 대체값을 반환합니다. 분기도 예외도 필요하지 않습니다.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o = std::nullopt;
std::cout << o.value_or(-1) << "\n"; // -1
}실제 데이터와 함께 사용하는 value_or
구성 값이나 조회 결과가 없을 때 기본값을 제공하는 것이 일반적인 사용 방법입니다.
#include <iostream>
#include <optional>
#include <string>
std::optional<std::string> lookup(bool found) {
if (found) return std::string("Pro");
return std::nullopt;
}
int main() {
std::cout << lookup(false).value_or("Free") << "\n";
}화살표 연산자
클래스 타입을 담는 선택적 값에서는 opt->member를 사용하여 멤버에 직접 접근할 수 있습니다(다시 말해 비어 있지 않다고 가정합니다).
#include <iostream>
#include <optional>
#include <string>
int main() {
std::optional<std::string> o = std::string("hello");
if (o) std::cout << o->size() << "\n";
}접근 전에 확인하기
안전한 관용 방식은 확인한 다음 사용하는 것입니다. 확인과 접근을 함께 처리하면 예외와 정의되지 않은 동작을 모두 피할 수 있습니다.
#include <iostream>
#include <optional>
int main() {
std::optional<int> o = 7;
if (o.has_value()) {
int x = *o;
std::cout << x * 2 << "\n";
}
}if의 초기화 문
if 문의 초기화 문을 사용하면 한 줄에서 선언과 확인을 수행할 수 있으며, 선택적 값의 범위를 해당 분기 안으로 제한할 수 있습니다.
#include <iostream>
#include <optional>
std::optional<int> find() { return 3; }
int main() {
if (auto v = find(); v.has_value())
std::cout << *v << "\n";
}변환(C++23)
transform과 같은 모나드 도우미는 값이 있을 때만 함수를 적용하고 새 선택적 값을 반환합니다. 이를 통해 계산을 깔끔하게 연결할 수 있습니다.
연결을 위한 and_then
and_then(C++23)은 그 자체로 선택적 값을 반환하는 함수를 호출하고 결과를 평탄화하므로, 각 단계가 실패할 수 있는 작업에 적합합니다.
접근 방식 선택하기
합리적인 기본값이 있으면 value_or를 사용하고, 비어 있는 상태가 예외를 발생시킬 만한 오류라면 value()를 사용하십시오. */->는 명시적으로 확인한 후에만 사용하십시오.
확인 없는 역참조 피하기
선택적 값이 비어 있지 않은지 확인하지 않고 *opt를 호출하지 마십시오. 이는 정의되지 않은 동작이며 충돌의 흔한 원인입니다.
빠른 확인
선택적 값에 접근하는 방법에 대한 이해를 확인해 보십시오.
복습
선택적 값에 접근하는 방법을 배웠습니다:
- 확인한 후
*와->를 사용합니다. - 빈 상태에서
value()를 호출하면 예외가 발생합니다. value_or는 기본값을 제공합니다.- 모나드 방식의
transform/and_then으로 연산을 연결합니다(C++23).
자주 묻는 질문
“optional 값에 접근하기” 강의는 무료인가요?
네 — “optional 값에 접근하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“optional 값에 접근하기”에서 뭘 배우나요?
value_or와 has_value 사용하기 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C++ Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“optional 값에 접근하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- optional로 부재 표현하기
- optional 값에 접근하기
- std::expected 기초
- 오류 처리 패턴