제공하신 코드 조각은 C에서 is_base_of 특성을 구현하여 한 클래스가 다른 클래스에서 상속되는지 확인합니다. CRTP(Curiously Recurring Template Pattern)라는 기술을 사용합니다.
Host는 파생 클래스를 래핑하고 해당 연산자 B*에 액세스하는 방법을 제공하는 템플릿 클래스입니다. 기능. B가 D의 기본 클래스인지 확인하려면 is_base_of::value를 호출합니다.
check 함수는 두 함수를 오버로드합니다.
연산자 B*는 const여야 합니다. 그렇지 않으면 호출할 검사 함수를 선택할 때 모호해지기 때문입니다. const 키워드를 사용하면 컴파일러는 B* const&를 취하는 검사 함수를 사용한다는 것을 알고 있습니다.
사용자를 사용하기 때문에 첫 번째 검사 함수가 더 좋습니다. -D*에서 B*로 변환하는 정의된 변환 시퀀스. 이는 B*에서 int로 변환하는 사용자 정의 변환 시퀀스를 사용하는 두 번째 검사 함수보다 더 구체적입니다.
위 내용은 CRTP를 사용한 C `is_base_of` 구현은 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!