>  기사  >  백엔드 개발  >  `std::Exception` 이상으로 C 표준 라이브러리의 다른 클래스를 확장할 수 있습니까?

`std::Exception` 이상으로 C 표준 라이브러리의 다른 클래스를 확장할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-03 12:33:31501검색

Can You Extend Other Classes in the C   Standard Library Beyond `std::exception`?

상속을 통해 C 표준 라이브러리 확장

접근하기 어려운 상속의 보루로 널리 알려진 C 표준 라이브러리에는 내부에 숨겨진 예외가 숨어 있습니다. 그 계급. std::Exception 클래스는 확장을 위해 명시적으로 설계된 유일한 엔터티로서 단독으로 사용됩니다.

다른 표준 라이브러리 클래스를 확장할 수 있습니까?

확실한 목록은 없지만 대답은 표준의 의도를 해석하는 데 달려 있습니다. 실용적인 접근 방식에는 다음 기준을 자세히 조사하는 것이 포함됩니다.

  • 가상 메서드의 부재: 가상 메서드가 없는 클래스는 기본 상속을 위한 것이 아닙니다(예: std::Vector).
  • 가상 메서드의 존재: 이러한 클래스는 잠재적인 기본 클래스 역할을 할 수 있습니다.
  • Friend 문: 풍부한 friend 선언은 캡슐화 문제를 암시하고 상속을 방해합니다.
  • 템플릿 특성: 템플릿은 평가를 보장합니다. 맞춤화에는 전문화가 충분한 경우가 많습니다.
  • 정책 기반 메커니즘: 이러한 클래스(예: std::char_traits)는 일반적으로 상속에 저항합니다.

의미 표준 라이브러리 클래스의 상속

std::Exception 확장은 또 다른 문제를 강조합니다.

인터페이스 기대 준수

표준 라이브러리 클래스에서는 상속된 인터페이스를 존중해야 합니다. 예를 들어 유효한 설명 대신 null 포인터를 반환하도록 what() 멤버 함수를 변경하는 하위 클래스는 ISO 표준에 지정된 인터페이스를 위반하는 것입니다. 엄밀히 말하면 표준 적합성 문제는 아니지만 정확성이 손상되고 기본 클래스에 대한 대체 원칙이 훼손됩니다.

위 내용은 `std::Exception` 이상으로 C 표준 라이브러리의 다른 클래스를 확장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.