왜 std::string에서 파생을 삼가야 하는가
Scott Meyers는 자신의 저서 Effective C에서 표준에서 파생하지 말라고 조언합니다. :string 클래스, 주로 가상 소멸자가 없기 때문입니다. 그러나 이것이 그러한 상속을 피하는 유일한 이유는 아닙니다.
상속 기준 정의
적절한 기본 클래스 역할을 하려면 클래스가 다음을 수행해야 합니다.
std::string 기본 클래스
std::string은 다음과 같은 이유로 이러한 기준을 충족하지 못합니다.
게다가 상속이 오로지 재사용성을 위한 시나리오에서도 C에는 클라이언트가 생성하는 것을 방지하는 메커니즘이 부족합니다. 기본 클래스 포인터를 사용하는 파생 클래스의 개체입니다. 이는 이러한 사용을 제한하려는 의도된 목적을 위반할 수 있습니다.
상속 위반의 결과
이러한 지침을 무시하면 다음과 같은 코드가 발생할 수 있습니다.
결론적으로 상속은 C는 다형성 상황을 위해 예약되어야 하며 std::string은 디자인 제약 및 슬라이싱 문제로 인해 기본 클래스로 사용되어서는 안 됩니다. 비멤버 함수나 구성과 같은 대체 방법을 사용하면 관용적인 C 관행을 촉진하고 코드 명확성과 안정성을 보장할 수 있습니다.
위 내용은 C에서 std::string을 상속받아서는 안 되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!