C의 Operator== 및 Operator!=
컴파일러는 기본 생성자, 복사 및 이동 생성자를 포함한 필수 클래스 멤버를 생성하는 반면, 및 할당 연산자의 경우 연산자== 및 같은 기본 비교 연산자 제공을 생략합니다. 연산자!=.
생략 이유
다른 언어의 멤버별 비교의 기본 동작과 달리 C에서는 잠재적인 숨김으로 인해 기본 비교 연산자를 명시적으로 제외합니다. 복잡성. 이 결정은 객체 의미론에 대한 통제되지 않거나 암시적인 가정이 예상치 못한 결과로 이어질 수 있다는 Bjarne Stroustrup의 우려에서 비롯되었습니다.
개발자를 위한 결과
개발자는 == 연산자를 수동으로 구현해야 하며 연산자!=. 동등성을 결정하려면 멤버 값만 비교하는 것이 아니라 전체 객체를 비교해야 하기 때문에 이는 메모리를 보유하는 클래스에 특히 중요합니다.
컴파일러 제한 사항
기본 복사 생성자를 생성하면 컴파일러는 멤버별 비교를 효과적으로 수행할 수 없습니다. 이는 연산자== 및 연산자!=가 멤버 값만으로는 안정적으로 파생될 수 없는 복잡한 개체를 비교해야 하기 때문입니다.
권장 연습
의도하지 않은 결과를 방지하려면, 연산자== 및 연산자!=를 사용하여 암시적 개체 동일성 검사에 의존하지 마세요. 클래스의 특정 요구 사항을 고려하여 항상 이러한 연산자를 명시적으로 구현하십시오.
위 내용은 C가 `operator==` 및 `operator!=`를 자동으로 생성하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!