내장 표준 연산자에 함수 포인터가 있을 수 있나요?
C에서는 내장 연산자의 함수 포인터를 직접 참조할 수 없습니다. 실제로는 함수 객체를 나타내지 않습니다. C 11 표준에 따르면 내장 연산자는 오버로드 해결을 위해 특별히 설계되었으며 다른 목적으로 사용할 수 없습니다.
제한 극복:
해결 방법 이를 위해서는 표준 라이브러리(§20.8)에 정의된 함수 개체를 사용할 수 있습니다. 비교를 위한 equal_to와 같은 이러한 함수 객체는 해당 Operator() 함수에서 등가 연산자로 붕괴됩니다. 함수 포인터에 대한 유효한 인수 역할을 할 수 있습니다.
표준 클래스 연산자 액세스:
내장 연산자는 직접 액세스할 수 없지만 표준 라이브러리 연산자를 다음과 같이 활용할 수 있습니다. 함수 포인터. 그러나 컴파일러를 안내하려면 적절한 템플릿 인스턴스를 지정해야 합니다. 예를 들어, std::basic_string의 연산자를 사용하려면 다음과 같이 해당 템플릿 유형을 명시적으로 지정해야 합니다.
<code class="cpp">typedef std::basic_string<char> string_type; ... std::cout << test_function<string_type>(a, b, &std::operator+) << std::endl;</code>
결론:
내장 연산자는 고유한 역할로 인해 직접적인 함수 포인터를 가질 수 없지만 표준 라이브러리에서 제공하는 함수 객체를 통해 또는 표준 클래스 연산자에 필요한 템플릿 인스턴스를 지정하여 해당 기능에 액세스할 수 있습니다.
위 내용은 C에서 내장 연산자와 함께 함수 포인터를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!