저자는 상속을 과도하게 강조하는 등 객체 지향 개념을 생물학적 분류 체계를 사용하여 설명하는 일반적인 관행의 한계를 비판합니다. 그런 다음 개발자들이 핵심 객체 지향 원칙을 오해하여 문제가 되는 코드를 작성한 C++ 코드베이스를 논의합니다. 한 예로 동물이 촉수를 가지고 있는지 여부를 결정하기 위해 다형성 대신 런타임 타입 검사(IS_INSTANCE_OF)를 사용하는 StealTentacle 함수가 있습니다.IS_INSTANCE_OF 매크로는 C 스타일 캐스팅과 함께 dynamic_cast를 잘못 사용하며, 이는 의도하지 않은 동작으로 이어질 수 있습니다. 이 매크로는 실제 타입을 확인하기 전에 객체 포인터를 기본 타입으로 강제하려고 시도하며, 이는 C++ 캐스팅 규칙에 대한 이해 부족을 보여줍니다. 개발자들의 주석은 dynamic_cast에 대한 혼란을 드러내는데, 이는 직접적인 상속 확인뿐만 아니라 관련 파생 타입 간의 크로스캐스팅도 수행할 수 있기 때문입니다.저자는 이러한 런타임 타입 검사가 안티 패턴이며, 해결하려는 문제는 타입 시스템 자체를 사용하여 더 우아하게 처리할 수 있다고 주장합니다. 코드는 매크로 검사 후 다운캐스팅을 시도하기 위해 더 많은 C 스타일 캐스팅을 사용하여 이를 더욱 보여줍니다. 궁극적으로 저자는 객체 지향 기능이 강력할 수 있지만, 특히 런타임 타입 정보와 함께 오용될 경우 복잡하고 비효율적인 코드로 이어져 언어의 우아함을 훼손할 수 있다는 의견에 동의합니다.
IS_INSTANCE_OF)를 사용하는StealTentacle함수가 있습니다.IS_INSTANCE_OF매크로는 C 스타일 캐스팅과 함께dynamic_cast를 잘못 사용하며, 이는 의도하지 않은 동작으로 이어질 수 있습니다. 이 매크로는 실제 타입을 확인하기 전에 객체 포인터를 기본 타입으로 강제하려고 시도하며, 이는 C++ 캐스팅 규칙에 대한 이해 부족을 보여줍니다. 개발자들의 주석은dynamic_cast에 대한 혼란을 드러내는데, 이는 직접적인 상속 확인뿐만 아니라 관련 파생 타입 간의 크로스캐스팅도 수행할 수 있기 때문입니다.저자는 이러한 런타임 타입 검사가 안티 패턴이며, 해결하려는 문제는 타입 시스템 자체를 사용하여 더 우아하게 처리할 수 있다고 주장합니다. 코드는 매크로 검사 후 다운캐스팅을 시도하기 위해 더 많은 C 스타일 캐스팅을 사용하여 이를 더욱 보여줍니다. 궁극적으로 저자는 객체 지향 기능이 강력할 수 있지만, 특히 런타임 타입 정보와 함께 오용될 경우 복잡하고 비효율적인 코드로 이어져 언어의 우아함을 훼손할 수 있다는 의견에 동의합니다.