C에서 내장 연산자에는 실제 함수 포인터 대응이 부족하며 그렇지 않습니다. 과부하 해결 이상의 역할을 수행합니다. 이 문제를 해결하기 위해 표준은 내장 연산자의 동작을 반영하는 함수 개체를 정의합니다.
표준은 다음과 같은 산술 및 비교 연산을 캡슐화하는 함수 개체를 제공합니다. as:
이러한 객체는 해당 연산자와 동등한 기능을 제공하며 함수 포인터 인수로 사용될 수 있습니다.
특정 표준 라이브러리 연산자는 함수 포인터를 허용합니다. 그러나 이를 위해서는 관련된 개체의 템플릿 유형을 지정해야 합니다. 예를 들어, std::basic_string의 연산자를 사용하려면 다음을 구현할 수 있습니다.
<code class="cpp">template<class Test> Test test_function (Test const &a, Test const &b, Test (*FPtr)(Test const &, Test const &)) { return FPtr(a, b); }</code>
다음 코드는 비교 작업을 위한 함수 객체의 사용법을 보여줍니다. :
<code class="cpp">template<typename ParamsType, typename FnCompareType> class MyAction { public: MyAction(ParamsType& arg0, ParamsType& arg1, FnCompareType& fnCompare) : arg0_(arg0), arg1_(arg1), fnCompare_(fnCompare) {} bool operator()() { if((*fnCompare_)(arg0_,arg1_)) { // do this } else { // do s.th. else } } private: ParamsType& arg0_; ParamsType& arg1_; FnCompareType& fnCompare_; }; void doConditional(int param1, int param2) { MyAction<int, std::equal_to<int>> action(param1,param2); if(action()) { // Do this } else { // Do that } }</code>
위 내용은 **C에서 내장 연산자의 기능을 구현하기 위해 함수 개체를 어떻게 사용할 수 있습니까?**의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!