"가장 짜증나는 구문 분석" 모호성: 균일한 초기화 풀기
C 영역에서는 "가장 짜증나는 구문 분석" 모호성이 발생할 수 있습니다. 다음 코드의 예시와 같이 균일한 초기화 프로그램을 만날 때:
<code class="cpp">class Timer { public: Timer() {} }; int main() { auto dv = Timer(); // What is Timer() ? And what type is dv? int time_keeper(Timer()); // This is a function right? And why isn't the argument "Timer (*) ()"? return 0; }</code>
dv 해석
줄에서 auto dv = Timer();, dv 유형 Timer()의 해석에 달려 있습니다. 이는 다음 중 하나일 수 있습니다.
이 경우 생성자 호출을 의미하므로 dv는 Timer 유형의 객체가 됩니다. auto 키워드는 초기화 프로그램을 기반으로 유형을 추론합니다.
time_keeper 이해
int time_keeper(Timer()); 줄에는 time_keeper라는 함수가 선언되어 있습니다. 인수는 예상할 수 있듯이 Timer (*) () 유형의 함수 포인터가 아닙니다. 오히려 타이머를 반환하고 인수를 사용하지 않는 함수에 대한 포인터를 나타냅니다. 그 이유는 다음과 같습니다.
결론적으로
"가장 성가신 구문 분석" 모호성은 혼란의 가능성을 강조합니다. C의 특정 구문을 해석할 때. 이러한 시나리오를 올바르게 이해하려면 균일한 초기화 및 함수 붕괴의 개념을 이해하는 것이 중요합니다.
위 내용은 Timer()는 생성자 호출인가요, 아니면 함수 호출인가요? C의 \'가장 짜증나는 구문 분석\' 모호함의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!