기본 클래스 함수가 virutal 인 경우 파생 클래스에서 함수가 비가 상으로 선언 된 경우 포인터에 함수 호출시 vtable 조회가 호출되는 이유는 무엇입니까? 이 기능은 범위에서 명확합니다.가상 함수가 파생 클래스에서 가상이 아닌 것으로 선언 된 경우
13
A
답변
21
virtual
을 기본 클래스에 선언하면 virtual
키워드가 생략 되어도 파생 클래스에서도 가상입니다.
그러나 설명서 목적으로는 어쨌든 그것을 반복하는 것이 좋습니다.
0
클래스가 가상 함수를 상속하는 경우 virtual
키워드를 사용하지 않아도 해당 함수의 새롭고 무시되는 선언이 자동으로 가상으로 만들어집니다.
2
함수는 여전히 가상입니다 (동일하거나 공변 인 서명이 있다고 가정). 재정의 할 때 virtual
을 사용하면 중복됩니다.
5
가상으로 기능을 만들 수 없으므로 가상으로 유지되며 기능 호출은 일반적으로 가상입니다. 물론, 컴파일러가이를 최적화하고 직접 호출을 할 수 있지만 상황에 맞지 않는 상황이 있습니다.
1
파생 클래스에 영향을주기 위해 생성 된 가상 메서드 (메서드를 가상으로 표시하면 파생 클래스에서 vtable을 사용함). 그리고 재정의 된 방법은 가상 될 것입니다.
관련 문제
- 1. 재정 가상이 아닌 방법
- 2. 변수가 부호없는 것으로 선언 된 경우 변수와 관련된 함수가 있어야합니까?
- 3. 파생 클래스에서 선언 된 유형의 추상 속성?
- 4. 가상이 아닌 소멸자가있는 컨테이너에서 상속
- 5. 파생 클래스에서 가상 메소드 구현 문제
- 6. 파생 된 유형의 객체에 대한 기본 클래스에서 가상 메서드를 호출합니다.
- 7. struct 구조체에서 파생 된 클래스의 가상 함수
- 8. 파생 클래스간에 열거 선언
- 9. 파생 된 클래스에서 기본 클래스
- 10. 동일한 클래스에서 파생 된 클래스에서 파생되는 C++ 하위 클래스
- 11. 가상 함수가 기본 클래스에서 같은 이름의 비가 상 함수를 재정의합니까?
- 12. 파생 클래스에서 클래스의 보호 된 멤버에 액세스
- 13. Android.Content.ActivityNotFoundException (Activity에서 파생 된 클래스에서 파생 된 클래스)
- 14. Stream에서 파생 된 클래스에서 Dispose 구현
- 15. 파생 클래스에서 속성 추가
- 16. 가상 클래스가 아닌 속성 및 메서드를 사용하여 시스템 클래스에서 파생 된 엔터티 클래스를 작성하고 매핑하는 방법은 무엇입니까?
- 17. 가상 클래스가 아닌 가상 클래스에서 상속하는 올바른 방법
- 18. .NET의 Form 클래스에서 파생
- 19. 추상 클래스에서 클래스 파생 (C++)
- 20. PHP 파일이 아닌 것으로 방향이 바뀌는 경우
- 21. MemberwiseClone()이 가상이 아닌 이유는 무엇입니까? System.Object에?
- 22. 변수가 선언 된 것으로 감지되지 않았습니다.
- 23. 가상 테이블 C++
- 24. C++에서 파생 된 함수가 호출되지 않았습니다.
- 25. QWidget의 소멸자가 가상이 아닌 이유는 무엇입니까? qwidget.h 보면
- 26. 다른 클래스에서 선언 된 IBAction 호출
- 27. VB.NET을 사용하여 클래스에서 선언 된 변수를 무시할 수 있습니까?
- 28. 선언 후 자동 인스턴스 파생
- 29. Moq 및 Moles를 사용하여 가상이 아닌 공개 메서드를 테스트 하시겠습니까?
- 30. C# 상속. 기본 클래스에서 파생 된 클래스는
컴파일러에는 중복 될 수 있지만 클래스를 사용하는 모든 사람에게 좋은 설명서입니다. –
@ LokiAstari : correct. – PlasmaHH