> 백엔드 개발 > C++ > C 연산자의 오른쪽에서 초기화 목록을 직접 사용할 수 없는 이유는 무엇입니까?

C 연산자의 오른쪽에서 초기화 목록을 직접 사용할 수 없는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-23 11:14:14
원래의
393명이 탐색했습니다.

Why Can't Initializer Lists Be Directly Used on the Right-Hand Side of C   Operators?

초기화 목록과 연산자 오른쪽

초기화 목록은 변수와 개체를 초기화하는 편리한 방법이지만 용도는 다음과 같습니다. 운영자의 오른쪽에서는 제한됩니다. 이러한 상황에서 초기화 목록을 허용하는 것이 논리적인 것처럼 보이기 때문에 이는 혼란스러울 수 있습니다.

제한 이유

C 표준에 따르면 초기화 목록은 고려되지 않습니다. 표현. 연산자에 대한 인수에는 일반적으로 표현식이 필요하므로 순수 초기화 목록은 금지됩니다.

예외

초기화 목록 사용을 허용하는 몇 가지 예외가 있습니다.

  • 함수 인수
  • 아래 첨자 표현식
  • 과제 오른쪽

근거

C 11 표준 위원회는 이니셜라이저 목록을 허용하지 않기로 결정했습니다. 파서 구현을 단순화하기 위한 연산자의 왼쪽. 왼쪽에도 허용하지 않고 오른쪽에 허용하는 것은 너무 일관성이 없었을 것입니다.

대안

다행히도 사용에 대한 대안이 있습니다. 연산자 오른쪽에 초기화 목록이 있습니다. 한 가지 옵션은 초기화 목록을 괄호로 묶어 rvalue 참조 표현식으로 변환하는 것입니다.

baz << (std::initializer_list<int>{1, -2, "foo", 4, 5});
로그인 후 복사

또 다른 옵션은 적절한 유형의 임시 변수를 생성하고 초기화 목록으로 초기화하는 것입니다.

auto data = bar{1, -2, "foo", 4, 5};
baz << data;
로그인 후 복사

이러한 대안은 초기화 목록을 직접 사용하는 것만큼 편리하지 않을 수 있지만 초기화 목록의 오른쪽 제한에 대한 해결 방법을 제공합니다. 연산자입니다.

위 내용은 C 연산자의 오른쪽에서 초기화 목록을 직접 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿