> 백엔드 개발 > C++ > C에서 다중 암시적 사용자 정의 변환을 적용할 수 있습니까?

C에서 다중 암시적 사용자 정의 변환을 적용할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-10-31 22:09:02
원래의
1054명이 탐색했습니다.

Can Multiple Implicit User-Defined Conversions Be Applied in C  ?

C 암시적 변환: 설명

최근 토론에서 C의 암시적 변환의 유효성에 의문이 제기되었습니다. 특히 문제는 여러 암시적 사용자 정의 변환이 허용되는지 여부와 관련됩니다. 이 문제를 밝히기 위해 다음 코드를 살펴보겠습니다.

<code class="cpp">struct A {
    A( const std::string & s ) {}
};

void func( const A & a ) {
}

int main() {
    func( "one" );                  // error
    func( A("two") );           // ok
    func( std::string("three") );   // ok
}</code>
로그인 후 복사

원래 질문에 언급된 대로 첫 번째 함수 호출에서는 const char *를 A로 변환하지 않기 때문에 오류가 발생합니다. . 문자열에서 A로의 변환이 존재하는 동안 이를 적용하는 것은 허용되지 않는 여러 변환을 포함합니다. 이는 C 표준에 의해 확증됩니다.

<code class="cpp">4 At most one user-defined conversion (constructor or conversion function) is implicitly applied to a single value.</code>
로그인 후 복사

이 경우 두 가지 암시적 변환(문자열을 const char 으로, const char 을 A로)이 있으면 이 규칙을 위반하여 다음과 같은 결과가 발생합니다. 컴파일러 오류. 따라서 C에서 다중 암시적 사용자 정의 변환이 금지된다는 주장은 정확합니다.

위 내용은 C에서 다중 암시적 사용자 정의 변환을 적용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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