사전 및 사후 증분에 대한 오버로딩: 모호성 해결
C에서 연산자를 오버로드하여 내장 연산자의 기능을 확장할 수 있습니다. 사용자 정의 유형. 일반적인 사용 사례 중 하나는 사전 및 사후 증분 작업 모두에 대해 증분 연산자( )를 오버로드하는 것입니다. 그러나 모호성 문제 없이 이를 달성하는 것은 어려운 일입니다.
초기 접근 방식: 동일한 반환 유형
제공된 코드 조각에서 초기 시도는 연산자에 사전 및 사후 증가 모두에 대해 동일한 반환 유형(int)입니다. 그러나 이 접근 방식은 다음과 같은 이유로 실패합니다.
해결책: 더미 인수로 오버로딩
이 모호성을 해결하기 위해 연산자의 후위 버전은 다음으로 오버로드됩니다. 더미 int 매개변수. 이 수정은 두 가지 목표를 달성합니다.
코드 예:
<code class="cpp">#include <iostream> class CSample { public: int m_iValue; // just to directly fetch inside main() CSample() : m_iValue(0) {} CSample(int val) : m_iValue(val) {} // Overloading ++ for Pre-Increment CSample& operator++() { ++m_iValue; return *this; } // Overloading ++ for Post-Increment CSample operator++(int) { CSample tmp(*this); operator++(); // prefix-increment this instance return tmp; // return value before increment } }; int main() { CSample obj1(5); std::cout << obj1.m_iValue << std::endl; // Output: 5 // Pre-Increment ++obj1; std::cout << obj1.m_iValue << std::endl; // Output: 6 // Post-Increment CSample obj2 = obj1++; std::cout << obj2.m_iValue << std::endl; // Output: 6 std::cout << obj1.m_iValue << std::endl; // Output: 7 return 0; }</code>
후위 버전에 대한 더미 인수로 연산자를 오버로드함으로써 모호성을 효과적으로 해결하고 C의 사용자 정의 유형에 대한 사전 및 사후 증분 동작을 모두 활성화합니다.
위 내용은 C에서 사전 및 사후 증분 모두에 대해 증분 연산자( )를 오버로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!