RHS의 연산자 오버로딩 및 초기화 목록
C 프로그래밍에서 초기화 목록은 표현식 목록으로 집계 개체를 초기화하는 간결한 구문입니다. . 이니셜라이저 목록은 다양한 시나리오에서 편리하게 사용할 수 있지만 연산자의 오른쪽(RHS)에서의 사용은 논의 대상이었습니다.
왜 이니셜라이저 목록이 RHS에서 제한되는지
C 11은 이항 연산자 <<를 포함하여 연산자의 RHS에 초기화 목록을 허용하지 않습니다. 귀하의 코드에 사용됩니다. 이러한 제한에는 몇 가지 이유가 있습니다.
초기화 목록 예외
일반 제한에도 불구하고 연산자 인수에 초기화 목록을 사용하면 C는 초기화 목록이 다음과 같은 특정 예외를 정의합니다. 허용됨:
코드에서 << 연산자:
foo baz; baz << bar{1, -2, "foo", 4, 5}; // Legal
제한 이유
연산자의 RHS에서 초기화 목록을 제한하기로 한 결정은 일관되고 명확한 문법을 유지하려는 욕구에서 비롯됩니다. 모든 컨텍스트에서 이니셜라이저 목록을 허용하면 언어에 추가적인 복잡성과 잠재적인 모호성이 발생하게 됩니다.
귀하의 질문에 언급된 토론 문서에서 언급한 대로 RHS에서는 이니셜라이저 목록을 허용하고 LHS에서는 허용하지 않는 대안이 고려되었습니다. 너무 문제가 많습니다. 따라서 특정 컨텍스트에서만 초기화 목록을 허용하는 보수적인 접근 방식이 선택되었습니다.
위 내용은 C 연산자의 오른쪽에 초기화 목록을 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!