C++ optional

tktj12·2024년 7월 20일
0

optional 클래스는 값이 있음, 값이 없음을 표현할 수 있다. 즉, 명시적으로 널값이 있을 가능성을 알릴 수 있다. (이는 오류 발생을 줄일 수 있다.)

c++17부터 지원된다.

반환값으로 활용

using namespace std;
optional<string> do_something()
{
	string s;

	// do something...

	if(no_problem)
		return s;
	return {}; // empty optional
}

처리

if(optional<string> s = do_something())
	cout << *s;
else {...}



매개변수로 활용

int sum(optional<int> a, optional<int> b)
{
	int res = 0;
	if(a) res += *a;
	if(b) res += *b;
	return res;
}



잘못된 사용

int sum2(optional<int> a, optional<int> b)
{
	return *a + *b;
}

optional 객체가 값을 갖고 있지 않을 때, 위와 같은 연산은 정의되어 있지 않다. 따라서 항상 객체에 값이 있는지 확인해야 한다.



참고

A Tour of C++ 3rd, p. 210

profile
C++, 알고리즘 공부

0개의 댓글