함수 포인터는 특정 연산자를 참조하는 방법을 제공합니다. 연산자 기능. 그러나 기본 제공 표준 연산자의 경우 이 접근 방식이 간단하지 않을 수 있습니다. 이 기사에서는 이러한 제한의 이유를 자세히 알아보고 유사한 기능을 달성하기 위한 대체 솔루션을 탐색합니다.
C 표준(13.6/ 1) 내장 연산자는 일반 연산자 함수가 아니므로 이를 가리키는 함수 포인터를 가질 수 없습니다. 다른 목적을 제공하지 않고 오버로드 해결에만 참여합니다.
이러한 제한을 극복하기 위해 C 표준은 내장 개체와 유사한 기능을 제공하는 함수 개체를 도입합니다. 템플릿 개체를 통한 연산자. 예를 들어, 비교를 위해 equal_to, great, less_equal과 같은 함수 개체가 정의됩니다. 이러한 객체는 함수 포인터 인수로 사용될 수 있습니다.
제공된 코드 조각에서 목표는 템플릿 클래스 내의 두 정수를 비교하는 것입니다. 함수 개체 기술을 사용하면 다음과 같이 달성할 수 있습니다.
<code class="cpp">class MyAction { bool operator()() { if (fnCompare_(arg0_, arg1_)) { // do this } else { // do s.th. else } } };</code>
여기서 fnCompare_는 std::equal_to
함수 객체 외에도 표준 라이브러리 연산자도 함수 포인터로 사용할 수 있습니다. 그러나 템플릿의 해당 인스턴스를 참조해야 합니다. 예를 들면 다음과 같습니다.
<code class="cpp">std::basic_string<char> a("test"), b("test2"); std::cout << test_function<std::basic_string<char>>(a, b, &std::operator+);</code>
함수 포인터는 내장 표준 연산자에 직접 사용할 수 없지만 함수 객체와 표준 클래스 유형 연산자가 제공하는 대체 솔루션은 동등한 기능을 허용합니다. 이러한 대안을 사용하면 특정 표준 연산자를 함수 포인터로 사용할 수 있어 내장 연산자로 인한 제한 사항을 해결할 수 있습니다.
위 내용은 ## 내장 C 연산자에 대한 함수 포인터를 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!