Delphi 2010에서 정적 다형성을 구현하는 방법이 있습니까?Delphi의 정적 다형성
답변
정적 다형성 델파이 수 없습니다 (질문을 다시 읽기, 어쨌든 D2010을 사용하는 것); 제네릭은 템플릿이 아닙니다. 템플리트와 달리 generics는 인스턴스화시가 아니라 선언시에 구문 분석됩니다. 그런 이유로 컴파일 된 모듈 (* .dcu)은 일반 엔티티의 AST 표현 만 포함하면되고 인스턴스화되지 않은 C++ 템플릿 선언에서 AST를 작성하는 것은 거의 불가능합니다.
델파이 2009에는 제네릭이 있습니다. 클래스 또는 인터페이스 제약과 함께 정적 폴리모픽을 구현하는 데 사용할 수 있습니다. 델파이 2010을 사용 고려할 수 있도록
불행하게도, 델파이 2009 년 제네릭 지원은 매우 버그가
generics의 클래스 또는 인터페이스 제약 조건은 vmt가 (런타임 오버 헤드) 사용되며 이는 여전히 동적 다형성을 의미합니다. 그렇지 않니? – valentyn
런타임 오버 헤드는 최소한이어야합니다 (1 어레이 조회). 왜 결국 차이가 있습니까? – jpfollenius
배열 조회 및 프로 시저 호출이라고 생각합니다. 동일한 가상 함수 호출 오버 헤드. 따라서 "동적 다형성이있는 경우 정적 다형성을 사용해야하는 이유"와 동일한 질문입니다. 거대한 횟수로 반복 할 때 차이가 나는 것 같아요. 어쨌든 내가 호출 할 함수 (또는 호출하지 않음)에 대한 컴파일 타임의 지식을 가지고있을 때 런타임에 그것을 지불해야하는 이유는 무엇인가. – valentyn
- 1. Delphi의 정적 키워드는 고유 한 코드로 어떤 점을 가지고 있습니까?
- 2. Delphi의 동적 메뉴/동작
- 3. Delphi의 SSL 소켓
- 4. delphi의 dbrichedit 확장 (TJvRichEdit)
- 5. Delphi의 스레드 컨텍스트
- 6. Windows 7과 Delphi의 통합
- 7. Delphi의 Java 클래스 사용
- 8. Delphi의 TADOConnection은 스레드로부터 안전한가요?
- 9. Delphi의 객체에 대한 RTTI
- 10. Delphi의 OnKeyDown 관련 문제
- 11. Delphi의 효율적인 캐시
- 12. 모호한 다형성?
- 13. 다형성 hql
- 14. 다형성 전화
- 15. 다형성 객관화
- 16. Clojure의 다형성
- 17. 다형성 참조
- 18. WCF의 다형성
- 19. 다형성 C에서
- 20. 다형성 문제
- 21. Delphi의 TDBGrid에서 현재 행 찾기
- 22. Delphi의 FastReport 페이지 방향 변경
- 23. Delphi의 선점 형 멀티 스레딩
- 24. Delphi의 Java 함수/클래스 사용
- 25. Delphi의 UDP 서버 및 클라이언트
- 26. Delphi의 단위 종속성을 생성하는 도구
- 27. 레일즈 다형성 '뒤로'
- 28. 다형성 STI 설정
- 29. Hibernate - 지속되는 다형성 결합
- 30. 복잡한 다형성 관계
C++ 템플릿과 같은 것을 의미한다면 - 어떻게 유닛 개념에 맞을까요? 인터페이스 섹션에 코드를 허용 하시겠습니까? – mghie
단위 개념이 C++ 템플릿의 일부 기능에만 어떻게 간섭하는지 이해할 수 없습니다. 사실 나는 가능한 모든 C++ 템플릿 기능을 가지고 싶습니다 (제네릭과 템플릿이 다르다는 것을 알고 있습니다).하지만 델파이 컴파일러가 제네릭 인스턴스화 후에 제네릭 매개 변수로 표현식을 확인하면 지금은 저에게 충분할 것입니다. 예를 들어, T가 generic 매개 변수 일 때 "컴파일러 오류"를보고 싶지 않고 구체적인 유형으로이 generic을 사용하기 전에 T.do_some()을 호출하려고합니다. – valentyn
물론 T가 제약을받지 않는 경우 컴파일러 오류가 발생합니다. 컴파일러는 do_some 메서드가 있는지 어떻게 알 수 있습니까? 이것은 제약 조건입니다 ... – jpfollenius