가상 함수 액세스를 위한 C의 상속 및 객체 초기화 이해
C에서는 상속을 통해 속성과 동작을 상속하는 파생 클래스를 생성할 수 있습니다. 기본 클래스에서. 그러나 C의 객체 초기화 순서는 가상 함수의 작동 방식에 영향을 미칠 수 있습니다.
질문:
가상 클래스가 있는 기본 클래스를 사용하여 C에서 객체를 생성하는 경우 함수, 왜 그 함수가 작동할까요? 예기치 않게?
답변:
여기서 핵심 개념은 기본 클래스와 파생 클래스의 초기화 순서입니다. C에서는 기본 클래스가 파생 클래스보다 먼저 구성됩니다.
설명:
제공된 예에서:
이 동작을 수정하려면:
파생 클래스의 value() 함수가 호출되는 동안 호출되도록 하려면: 객체 생성을 위해서는 파생 클래스 인스턴스의 주소를 사용하여 명시적으로 기본 클래스를 초기화해야 합니다.
derived example; base(&example).value()
다음을 전달하여 파생 개체의 주소를 사용하려면 기본 생성자에게 파생 개체에 대해 value() 함수를 호출하도록 지시하여 개체를 완전한 파생 형식으로 효과적으로 "성숙"시킵니다.
위 내용은 C 객체 초기화 중에 가상 함수가 예기치 않게 동작하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!