개발하는 리프터 꽃게맨입니다.

[C++] most vexing parse, 성가신 파싱 본문

언어/C, C++

[C++] most vexing parse, 성가신 파싱

파워꽃게맨 2024. 7. 5. 01:17

most vexing parse 이하 성가신 파싱은 선언으로 해석할 수 있는 것은 선언으로 해석해야 한다.는 규칙이다.

예를 들어 아래같은 코드를 보자.

 

 

여기서 MyClass a() 를 생각해보자.

이 구문은 2가지로 해석될 여지가 있다.

 

1. 함수 선언

2. 객체의 생성 (기본생성자 호출)

 

그런데 '성가신 파싱'에 의해 무조건 '선언'으로 해석된다.

 

 

분명 생성자는 호출했다고 생각했는데

생성자가 호출이 안된 것을 볼 수 있다.

 

따라서 '성가신 파싱'을 회피하기 위해서 객체를 선언하고 싶다면 언제나 중괄호 초기화를 사용하는 것을 권장한다.