이 코드를 이 코드의 동작을 이해해야합니다. (즉,로 선언 된 것을 handler
의로, 여기 Handler*
인)가상 기능
가상 기능
답변
기능 오버로드가 아니라 자신의 정적 유형에 (당신의 인수에 대해 여기 CustomHandler*
입니다) 인수의 실행 유형에 따라 작동하지 않습니다 .
가상 함수를 사용하면 개체 (함수를 호출 한 개체)의 런타임 유형을 기반으로 함수 호출을 수행 할 수 있습니다. 여러 객체의 런타임 유형을 기반으로 호출을 전달하는 것을 다중 발송이라고합니다. 이 instace에서 우리는 가장 일반적인 경우 인 double dispatch에 대해 이야기하고 있습니다. 이런 종류의 기능을 원하면 double dispatch를 구현하거나 그것을 대신하는 라이브러리를 사용해야합니다.
Visitor pattern은 구현을 수행하는 꽤 일반적인 방법입니다. Difference betwen Visitor pattern & Double Dispatch도 참조하십시오.
마지막으로, 예제 코드 (아래로 스크롤) here을 포함하는 Visitor에 대한 좋은 토론을 찾을 수 있습니다.
+1 내가 대답하려고 한 것을 썼습니다. 단, 구체적인 방문자 패턴 예제를 포함 할 계획이었습니다. –
@ Cheersandhth를 추가하십시오.-Alf : 잘 수행해야하는 링크를 추가했습니다. 나는 예제를 인라인으로 추가하고 싶지 않았다 (너무 많은 상용구). – Jon
- 1. 가상 기능 -
- 2. 가상 기능
- 3. 가상 기능 구현
- 4. 기능 오버로드와 가상 메서드 테이블
- 5. 오류 만들기 C++ 기능 가상
- 6. 게재 위치 새 기능 및 가상 기능을 사용하고 있습니다. 내 가상 함수 테이블이 잘못된 이유는 무엇입니까?
- 7. Java 가상 머신을 관리하는 JMX의 기능 중 기본 제공
- 8. 가상 기능은
- 9. 가상 마이크 (가상 마이크)
- 10. 가상 클래스
- 11. 가상 생성자는 있지만 가상 소멸자
- 12. 기능 기능
- 13. 런타임시 가상 멤버 디스패치
- 14. 가상 회의 구축을위한 아이디어
- 15. MS 윈도우 용 X11 기능
- 16. C++ : 개인 가상 함수 대 순수 가상 함수
- 17. 가상 함수와 순수 가상 함수의 차이점은 무엇입니까?
- 18. 가상 레지스트리/가상 파일 시스템 프로젝트 찾기
- 19. 상속 가상 클래스와 비 가상 클래스
- 20. 가상 주소 및 가상 주소 공간 이해
- 21. 로컬 가상 머신에서 가상 호스트에 액세스
- 22. jQuery를 기능 - 나는 기능 다음 한 기능
- 23. 기능 ($ 변수)와 기능()
- 24. XSLT : XML : 기능/기능
- 25. 가상 주소
- 26. - 가상 속성
- 27. 가상 테이블은
- 28. 가상 디렉토리
- 29. 가상 상속
- 30. 가상 키보드
코드에 많은 문제가 있습니다. 우선, 함수 인수는 * references *이어야합니다. –
왜 참조해야합니까? – user152508
(a) 슬라이싱 및 (b) 불필요한 복사로 인해. – ipc