noexcept

보물창고·2023년 1월 25일
0

개념

: 예외가 없음을 알리는 문법.

사용법

: 함수 뒤에다가 noexcept를 작성하자.

특징

  • 함수 내부에서 throw 할 경우, 경고 발생함.

    • try~catch 문에다가 호출하면, 런타임 에러 발생함.

사용해야 하는 이유

  • 예외가 없음을 표기하면, 최적화 코드를 얻을 수 있음.
  • 예외 유무를 조사할 수 있음.
  • 이동생성자와 이동대입 연산자의 경우, 이동 처리시에 예외가 절대로 발생하면 안된다. 그래거 이동생성자와 이동 대입에는 noexcept를 선언해야 한다.
  • (내용추가) 생성자에서 예외처리 발생하면 소멸자 호출안된다.
    이를 유념하고 있자.

반드시 사용해야 할 때

: 이동 생성자와 이동 대입연산자를 만들때, 반드시 작성하자.
-> 네이버 블로그의 move와 예외에 대해서 포스트를 참고하자.

지정자와 연산자.

  • 예외 유무를 결정하는 연산자가 있음.

problem

: 예외 있는 func1과 예외 없는 func2를 만들고,
noexcept 함수처럼 사용해서 func1과 func2를 인자로 넣어서 출력하라.

예외 없음을 조사하는 방법.

  • is_nothrow_constructible<class명>::value
class Test
{
	public : 
    Test() noexcept {}
}

int main()
{
	bool b = is_nothrow_constructible<Test>::value;
    cout << b << endl;
}
profile
🔥🔥🔥

0개의 댓글